Imagen de fondo en un JPanel

Este ejemplo explicara como poner una imagen de fonde en un Janel, tan solo se debe seguir lo pasos que se presentan a continuacion.

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 ImageFondoPanel que hereda de JPanel


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("/foto.png")).getImage();
}

public void paint(Graphics g) {
if (imgFondo != null) {
g.drawImage(imgFondo, 0, 0, getWidth(), getHeight(), this);
}
}
}

El metodo preInit() contiene la linea especifica que establece la imagen en el Jpanel, es decir la linea numero 20, notese como se asigna la imagenen foto.png que se encuentra dentro de la carpeta raiz del proyecto

Leave a Reply