Foros del Web » Programación para mayores de 30 ;) » Java »

Ventanas con forma personalizada en Java

Estas en el tema de Ventanas con forma personalizada en Java en el foro de Java en Foros del Web. Hola a todos los del foro nuevamente. Traigo una pregunta que la verdad me la he intentado resolver pero no he sido capaz y la ...
  #1 (permalink)  
Antiguo 30/05/2011, 16:17
Avatar de Ferkhis  
Fecha de Ingreso: mayo-2011
Ubicación: Medellín
Mensajes: 52
Antigüedad: 13 años, 7 meses
Puntos: 2
Pregunta Ventanas con forma personalizada en Java

Hola a todos los del foro nuevamente.

Traigo una pregunta que la verdad me la he intentado resolver pero no he sido capaz y la verdad he buscado bastante en Google pero no he podido dar con una solución sólida, sólo con unos casos específicos que no me sirven.
Se trata de crear un Frame ó JFrame para hacer una ventana en Java, pero con la particularidad de que no sea la ventana convencional cuadrada con el lookandfeel que Java provee, ni con las formas de elipse, rectangulo, o círculo. lo que realmente busco es crear una ventana con la forma de una imagen (JPG, PNG, GIF) que yo mismo cargue dentro de la aplicación a través de BufferedImage o algo por el estilo.
Los pasos básicos que esto debería tener serían:

1. cargar la imagen en memoria con BufferedImage ó algo similar
2. definir un color que se debe volver transparente para recortar la imagen de su fondo
3. convertir la nueva imagen a un objeto Shape
4. utilizar el evento setShape() para que la ventana tome la nueva forma.

He intentado esto de varias maneras pero no he sido capaz. si alguien ha hecho algo por el estilo le agradecería que me diera una orientación.
  #2 (permalink)  
Antiguo 31/05/2011, 14:20
Avatar de Carlangueitor
Moderador ლ(ಠ益ಠლ)
 
Fecha de Ingreso: marzo-2008
Ubicación: México
Mensajes: 10.037
Antigüedad: 16 años, 9 meses
Puntos: 1329
Respuesta: Ventanas con forma personalizada en Java

Hago copy & paste del libro Swing Hacks:
Código Java:
Ver original
  1. public static void main(String[] args) {
  2.     JFrame frame = new JFrame("Transparent Window");
  3.     frame.setUndecorated(true);
  4.    
  5.     TransparentBackground bg = new TransparentBackground(frame);
  6.     bg.snapBackground( );
  7.     bg.setLayout(new BorderLayout( ));
  8.  
  9.    JPanel panel = new JPanel( ) {
  10.         public void paintComponent(Graphics g) {
  11.             g.setColor(Color.blue);
  12.             Image img = new ImageIcon("mp3.png").getImage( );
  13.             g.drawImage(img,0,0,null);
  14.         }
  15.     };
  16.     panel.setOpaque(false);
  17.  
  18.     bg.add("Center",panel);
  19.  
  20.     frame.getContentPane( ).add("Center",bg);
  21.     frame.pack( );
  22.     frame.setSize(200,200);
  23.     frame.setLocation(500,500);
  24.     frame.show( );
  25. }

Saludos
__________________
Grupo Telegram Docker en Español
  #3 (permalink)  
Antiguo 02/06/2011, 11:28
Avatar de Ferkhis  
Fecha de Ingreso: mayo-2011
Ubicación: Medellín
Mensajes: 52
Antigüedad: 13 años, 7 meses
Puntos: 2
Exclamación Respuesta: Ventanas con forma personalizada en Java

Cita:
Iniciado por Carlangueitor Ver Mensaje
Hago copy & paste del libro Swing Hacks:
Código Java:
Ver original
  1. public static void main(String[] args) {
  2.     JFrame frame = new JFrame("Transparent Window");
  3.     frame.setUndecorated(true);
  4.    
  5.     TransparentBackground bg = new TransparentBackground(frame);
  6.     bg.snapBackground( );
  7.     bg.setLayout(new BorderLayout( ));
  8.  
  9.    JPanel panel = new JPanel( ) {
  10.         public void paintComponent(Graphics g) {
  11.             g.setColor(Color.blue);
  12.             Image img = new ImageIcon("mp3.png").getImage( );
  13.             g.drawImage(img,0,0,null);
  14.         }
  15.     };
  16.     panel.setOpaque(false);
  17.  
  18.     bg.add("Center",panel);
  19.  
  20.     frame.getContentPane( ).add("Center",bg);
  21.     frame.pack( );
  22.     frame.setSize(200,200);
  23.     frame.setLocation(500,500);
  24.     frame.show( );
  25. }

Saludos
Hey amigo muchas gracias por responder, y parece que el código (esa parte que escribiste está bien) sin embargo creo que está incompleto... y no logro figurar bien todos sus elementos. Por ejemplo no conozco la clase TransparentBackground, que según veo, es una clase que yo mismo debo crear... si no es mucha molestia, podrías darle una ojeada al libro nuevamente para ver si falta código? Muchas gracias amigo!
  #4 (permalink)  
Antiguo 02/06/2011, 13:58
Avatar de Carlangueitor
Moderador ლ(ಠ益ಠლ)
 
Fecha de Ingreso: marzo-2008
Ubicación: México
Mensajes: 10.037
Antigüedad: 16 años, 9 meses
Puntos: 1329
Respuesta: Ventanas con forma personalizada en Java

Perdón, sí, justamente necesitas la clase TrasnparentBackground, bueno por suerte justamente ese capitulo de libro lo puedes ver aquí: http://onjava.com/pub/a/onjava/excer...k41/index.html viene todo completo.

Saludos
__________________
Grupo Telegram Docker en Español

Etiquetas: image, shape, transparencia
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:08.