Para agregar una imagen de fondo a nuestro JFrame lo que hacemos es sobrescribir el método paint y en él pintamos la imagen de fondo precargada (jpg, png, gif, etc.) que queramos utilizar:
import java.awt.Graphics;
import java.awt.Image;
//...
public class FrameConFondo extends javax.swing.JFrame {
//...
private Image imagen = null;
//...
@Override
public void paint(Graphics g) {
if (imagen != null) {
g.drawImage(imagen, 0, 0, getWidth(), getHeight(), this);
}
//...
}
//...
}
La imagen ademas al dibujarse en el metodo paint, se redimensionara junto con el JFrame:
La imagen de fondo puede ser fija durante todo el tiempo, cargándola por ejemplo en el constructor del formulario, o ir cambiando cuando deseemos, actualizando el contenido de la variable imagen y llamando explicitamente a que se refresque la pantalla (con el método repaint())
Ejemplo de la carga de la imagen a partir de una imagen almacenada en el mismo JAR:
public FrameConFondo() {
//...
try {
String nombre = "aaaa.PNG";
imagen = new ImageIcon(getClass().getResource(nombre)).getImage();
} catch (Exception e) {
System.err.println("Error al cargar Imagen: " + e.getMessage());
e.printStackTrace();
}
}
Ejemplo de la carga de la imagen a partir de una imagen almacenada fuera del JAR:
public FrameConFondo() {
//...
try {
String nombre = "aaaa.PNG";
imagen = new ImageIcon(nombre).getImage();
} catch (Exception e) {
System.err.println("Error al cargar Imagen: " + e.getMessage());
e.printStackTrace();
}
}
Ejemplo de método que se puede utilizar para ir cambiando la imagen de fondo:
public FrameConFondo(Image imagenNueva) {
imagen = imagenNueva;
repaint();
}
Espero les sirva.
Saludos


