Home / Programmazione / Java / Impostare una immagine in background su JPanel
Mattepuffo

Impostare una immagine in background su JPanel

Impostare una immagine in background su JPanel

Impostare un'immagine in background su un JPanel non è un'impostazione difficile.

Ci bastano un BufferedImage e ImageIO.

Vediamo un esempio di JPanel che richiede nel costruttore un oggetto File (l'immagine appunto).

Nell'esempio non ho fatto un controllo sulla effettiva esistenza del file; quello mettetelo dove meglio credete nella vostra applicazione.

Ecco il JPanel:

import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.JOptionPane;
import javax.swing.JPanel;

public class PanelImage extends JPanel {

    private BufferedImage image;
    private int w;
    private int h;

    public PanelImage(File file) {
        super();
        try {
            image = ImageIO.read(file);
            w = image.getWidth();
            h = image.getHeight();
        } catch (IOException ex) {
            JOptionPane.showMessageDialog(null, ex.getMessage());
        }
    }

    @Override
    public Dimension getPreferredSize() {
        return new Dimension(w, h);
    }

    @Override
    protected void paintComponent(Graphics g) {
        super.paintComponent(g);
        g.drawImage(image, 0, 0, this);
    }

}

Nel mio caso imposto anche la dimensione in base alla grandezza dell'immagine.

Leggiamo l'immagine con ImageIO.read.

Sotto facciamo l'override del metodo paintComponent per diesgnare l'immagine.

Considerate che il metodo drawImage ha varie versioni.

Enjoy!