Cómo puedo insertar una imagen de fondo en un JPanel
Para darle un toque más personal a mis aplicaciones Swing he pensado poner imágenes de fondo a los componentes JPanel. ¿Qué código tengo que escribir para que los objetos de tipo JPanel tengan una imagen de fondo asociada?
Respuesta
Para insertar por ejemplo la imagen cuaderno.png en un JPanel

con el siguiente resultado tenemos que realizar lo siguiente

Crear una Clase que herede de JPanel y entonces sobreescribimos el método paintComponent(..)
Antes de crear la clase conozcamos una de las signaturas del método drawImage(...) de la Clase Graphics
| public abstract boolean drawImage(Image img, int x, int y, ImageObserver observer) |
-
Image img
- la Clase abstracta java.awt.Image es la superclase de todas las Clases que representan imagenes en Java
- int x, int y
- la imagen se coloca en las coordenadas marcada por x e y en la esquina superior izquierda del componente que la albergue
- ImageObserver observer
- cuando la imagen acaba de ser cargada en el componente entonces se lo notifica a un Objeto de tipo java.awt.image. ImageObserver asociado a la imagen
Este es el código de la Clase ImagenFondoPanel que hereda de JPanel
package paqswing;
import java.awt.Graphics;
import java.awt.Image;
import javax.swing.ImageIcon;
public class ImagenFondoPanel extends javax.swing.JPanel {
private Image imgFondo;
public ImagenFondoPanel() {
preInit();
initComponents();
}
private void initComponents() {
.
.
.
}
private void preInit(){
imgFondo = new ImageIcon(getClass().getResource("/imagenes/cuaderno.png")).getImage();
}
protected void paintComponent(Graphics g) {
g.drawImage(imgFondo,0,0,null);
}
}
|
- private void preInit(){
- este método obtiene la imagen de fondo cuaderno.png de un fichero JAR
Ahora sólo queda crear la Clase ImagenFondoMarc para añadirle nuestro panel.
Ignasi Pérez Valls
asesor-formador independiente
ignasiperez[ARROBA]javadabbadoo[PUNTO]org