Comment afficher une image en arrière-plan d’un composant Swing?
En effet il n’existe pas de concept « Image en arrière-plan » dans un JPanel, il faudrait écrire sa propre façon de mettre en œuvre une telle fonctionnalité.
Une façon d’y parvenir consiste à redéfinir la méthode paintComponent() pour dessiner une image d’arrière-plan à chaque fois que le JPanel est actualisé.
Vous devrez définir le comportement du composant, vous assurer qu’il n’est pas opaque et redéfinir la méthode paintComponent() de sorte que l’image soit dessinée avant l’appel de la méthode paintComponent() de la superclasse.
Dans l’exemple suivant nous avons utiliser cette image, vous pouvez la télécharger dans votre projet.
Exemple:
import javax.swing.*; import java.awt.*; public class ImageBackground { public static void main(String args[]) { JFrame frame = new JFrame("Afficher une image en arrière-plan"); final ImageIcon icon = new ImageIcon("background.png"); JTextArea text = new JTextArea() { Image img = icon.getImage(); // initialiseur d'instance {setOpaque(false);} public void paintComponent(Graphics graphics) { graphics.drawImage(img, 0, 0, this); super.paintComponent(graphics); } }; JScrollPane pane = new JScrollPane(text); Container content = frame.getContentPane(); content.add(pane, BorderLayout.CENTER); frame.setDefaultCloseOperation(3); frame.setSize(400, 300); frame.setVisible(true); } }
Sortie: