Incluyendo una imagen de fondo a un JFrame

Posted on Mayo 14, 2008. Filed under: Java, Swing | Tags: , , , , |

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

Make a Comment

Make A Comment: ( None so far )

blockquote and a tags work here.

Liked it here?
Why not try sites on the blogroll...