Incluyendo una imagen de fondo a un JFrame

Posted on Mayo 14, 2008.

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

Read Full Post | Make a Comment ( None so far )

Recently on Le Funes...

Endianess: Big-Endian y Little-Endian

Posted on Mayo 13, 2008.

Concatenación de cadenas en Java: Optimizaciones realizadas por el compilador

Posted on Mayo 8, 2008.

Integrar Jad a NetBeans mediante NBJAD

Posted on Mayo 6, 2008.

Soporte para Librerías Compartidas en NetBeans 6.1

Posted on Abril 11, 2008.

Optimización al concatenar Strings en Java

Posted on Marzo 13, 2008.

Convertir byte[] en UTF8 a un String en Java

Posted on Marzo 8, 2008.

Parseando XML en Java mediante SAX

Posted on Marzo 1, 2008.

Utilizando Doble Buffer en JFrame mediante BufferStrategy

Posted on Febrero 27, 2008.

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