JCDesktopPane es un componente swing para java que permite añadir una imagen de fondo en las aplicaciones del tipo MDI, esto lo puedes hacer mediante código o directamente desde el editor de Netbeans.
PROPIEDADES
Se le añadio la propiedad
setImagenDeFondo(Icon imagen): Coloca la imagen dentro el componente
getImagenDeFondo(): Retorna la imagen que esta dentro el componente
Por defecto trae una imagen de fondo.
INSTALACIÓN EN NETBEANS
Se instala como cualquier otro componente, al monento de instalar el componente en Netbeans, apareceran tres archivos:
Solo debe agregarse el archivo JCDesktopPane.
Una vez instalado podras reconocer el componente en la Paleta de Netbeans por el icono
Lo que se hace para que la imagen de fondo aparesca dentro del componente es reescribir la clase Border y añadir esta despues al componente JDesktopPane, solamente eso, el código en si, es bastante pequeño y te lo dejo a continuación.
CODIGO FUENTE
clase JCDesktopPane.java
package JCDesktopPane; import javax.swing.Icon; import javax.swing.ImageIcon; import javax.swing.JDesktopPane; /** * @web http://jc-mouse.blogspot.com/ * @author Mouse */ public class JCDesktopPane extends JDesktopPane { private JCBorder jcborder = new JCBorder(); private Icon icon; public JCDesktopPane() { this.setBorder( jcborder ); } public void setImagenDeFondo(Icon imagen) { this.icon=imagen; jcborder.imagen(((ImageIcon)icon).getImage()); } public Icon getImagenDeFondo() { return this.icon; } }
Clase JCBorder.java
package JCDesktopPane; import java.awt.Component; import java.awt.Graphics; import java.awt.Image; import java.awt.Insets; import javax.swing.ImageIcon; import javax.swing.border.Border; /** * @web https://www.jc-mouse.net/ * @author Mouse */ public class JCBorder implements Border{ private Image imagen_fondo; public JCBorder(){ imagen_fondo = new ImageIcon(getClass().getResource("/ico/jcmouse.png")).getImage(); } public void imagen(Image imagen) { this.imagen_fondo = imagen; } public void paintBorder(Component c, Graphics g, int x, int y, int width, int height) { if( imagen_fondo.getWidth(null) < width || imagen_fondo.getHeight(null) < height) g.drawImage(imagen_fondo, (x + (width - imagen_fondo.getWidth(null))/2),(y + (height - imagen_fondo.getHeight(null))/2), null); } public Insets getBorderInsets(Component c) { return new Insets(0,0,0,0); } public boolean isBorderOpaque() { return true; } }
Si quieres utilizar el componente en cualquiera de tus proyectos aqui tienes el enlace de descarga: