Spesso nasce la necessità di applicare uno sfondo, che può essere una foto o un'immagine realizzata appositamente, ad un JPanel: per poter arrivare a tale risultato abbiamo la necessità di utilizzare una classe che estente la classe JPanel e che quindi richiameremo per creare il nostro pannello.
import java.awt.Image;
import javax.swing.ImageIcon;
import javax.swing.JPanel;
import java.awt.Dimension;
import java.awt.Graphics;
class JPanelWithBackgr extends JPanel {private Image immagine;public JPanelWithBackgr (String immagine) {this(new ImageIcon(immagine).getImage());}
public JPanelWithBackgr (Image img) {this.img = img;Dimension size = new Dimension(img.getWidth(null), img.getHeight(null));// le dimensioni del pannello corrispondono a quelle della immagine
setPreferredSize(size);setMinimumSize(size);setMaximumSize(size);setSize(size);setLayout(null);}
public void paintComponent(Graphics g) {g.drawImage(img, 0, 0, null);}
}
Per creare un JPanel con sfondo ci basta istanziare l'oggetto JPanelWithBackgr:
JPanelWithBackgr panel = new JPanelWithBackgr("C:\\immagine.png");