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

JDesktopPane con imagen de fondo label

Estas en el tema de JDesktopPane con imagen de fondo label en el foro de Java en Foros del Web. Hola a todos, mi problema es el siguiente: quiero colocar en mi JDektopPane un fondo, lo cual, segun lei en unas busquedas de google, lo ...
  #1 (permalink)  
Antiguo 24/07/2010, 01:16
Avatar de francopai  
Fecha de Ingreso: agosto-2008
Mensajes: 42
Antigüedad: 11 años, 3 meses
Puntos: 2
JDesktopPane con imagen de fondo label

Hola a todos, mi problema es el siguiente: quiero colocar en mi JDektopPane un fondo, lo cual, segun lei en unas busquedas de google, lo puedo hacer "poniendo encima un JLabel", que por cierto me quedó un codigo como este:
Código:
private void formWindowOpened(java.awt.event.WindowEvent evt) {
   JLabel lbl_Fondo = new JLabel();
   dp_Escritorio.add(lbl_Fondo);
   lbl_Fondo.setSize(dp_Escritorio.getSize());
   ImageIcon imagenFondo = new ImageIcon(GUI_Principal.class.getResource("Wallpaper.jpg"));
   ImageIcon imagenFondoRedimensionado = new ImageIcon(imagenFondo.getImage().getScaledInstance(lbl_Fondo.getWidth(),   lbl_Fondo.getHeight(), java.awt.Image.SCALE_SMOOTH));
   lbl_Fondo.setIcon(imagenFondoRedimensionado);
}
Aclaracion: dp_Escritorio es la variable tipo JDesktopPane ya inicializada y agragada al JFrame


Todo parece q funciona bien, pero entre tanto probar, me di cuenta que algunas veces de iniciar la aplicacion una y otra vez, algunas veces no se redimensiona y otras si, muy raro realmente. Luego de llenar de breakpoints mi proyecto, al parecer no actualiza el tamaño real del JDektop y por eso le asigna un valor erroneo.
Tengo q aclarar que el JFrame que contiene mi JDesktopPane aparece inicialmente con un tamaño fijo y luego se maximiza con setExtendedState(MAXIMIZED_BOTH); en el constructor del JFrame.

Nose porque este comportamiento, ya probé mil soluciones posibles y sigue haciendo lo mismo, algunas veces se redimensiona bien la imagen y otras queda con el tamaño "viejo" y el JDektopPAne maximizado, osea queda la imagen muy descolocada.
Un dato curioso que noté, esto solo ocurre en Linux, en Windows probé iniciar muchisimas veces, y siempre lo redimensiona bien.
Pienso que es algo del Swing, pero ya nose mas que probar, cualquier idea o ayuda será muy agradecida.
Un saludo a todos!

Última edición por francopai; 24/07/2010 a las 01:25
  #2 (permalink)  
Antiguo 24/07/2010, 11:53
 
Fecha de Ingreso: noviembre-2006
Mensajes: 56
Antigüedad: 13 años, 1 mes
Puntos: 1
Respuesta: JDesktopPane con imagen de fondo label

Hola, prueba actualizar el JLabel desde el método ComponentResized() de la clase JDesktopPane, lo he probado en linux y va perfecto:
Código:
private void jDesktopPane1ComponentResized(java.awt.event.ComponentEvent evt) {
        try {
            lbl_Fondo.setSize(jDesktopPane1.getSize());
            imagenFondo = new ImageIcon(getClass().getResource("fondo.png"));
            imagenFondoRedimensionado = new ImageIcon(imagenFondo.getImage().getScaledInstance(lbl_Fondo.getWidth(),   lbl_Fondo.getHeight(), java.awt.Image.SCALE_SMOOTH));
            lbl_Fondo.setIcon(imagenFondoRedimensionado);
        } catch (Exception e) {}
    }
Un Saludo.
  #3 (permalink)  
Antiguo 24/07/2010, 13:37
Avatar de francopai  
Fecha de Ingreso: agosto-2008
Mensajes: 42
Antigüedad: 11 años, 3 meses
Puntos: 2
Respuesta: JDesktopPane con imagen de fondo label

Muchas Gracias garkones !!!, hice unas pequeñas pruebas y funciona perfecto, ahora solo me queda pulir un poco el codigo y esta listo.
Gracias por tu tiempo
Un saludo

Etiquetas: fondo, label
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 17:23.