Aprende Java Aprende Php Aprende C++ Aprende HTML 5 Aprende JavaScript Aprende JSON Aprende MySQL Aprende SQLServer Aprende Visual Basic 6 Aprende PostgreSQL Aprende SQLite Aprende Redis Aprende Kotlin Aprende XML Aprende Linux VSC Aprende Wordpress Aprende Laravel Aprende VueJS Aprende JQuery Aprende Bootstrap Aprende Netbeans Aprende Android
Sigueme en Facebook Sigueme en Twitter Sigueme en Instagram Sigueme en Youtube Sigueme en TikTok Sigueme en Whatsapp
Home / Componentes / JCDesktopPane: Imagen de fondo en MDI

JCDesktopPane: Imagen de fondo en MDI

Por jc mouse sábado, febrero 4, 2012

Imagen de fondo MDI
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:

  • JCDesktopPane
  • JCBorder
  • JCDesktopPaneBeanInfo

Solo debe agregarse el archivo JCDesktopPane.

Una vez instalado podras reconocer el componente en la Paleta de Netbeans por el icono

icono componente

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:

Click para descargar

Tags

Artículos similares