Afficher une image dans un JPanel - Java/Swing

Bonjour :]

Je cherche à afficher une image dans un JPanel.

Je ne sais pas trop comment m’y prendre, j’ai essayé la chose suivante sans succès:

BufferedImage image = javax.imageio.ImageIO.read( new java.io.File("c:\\boo.jpg") );
monjpanel.add(image);

Bref… Comment dois je m’y prendre ? :’)

thx

Le JPanel à mon avis ne permet pas de faire ça, du moins pas sans redéfinir la méthode paint (donc faire un JBackgroundPanel, etc).

Effectivement le JPanel ne le permet pas, un JLabel oui :

image = new JLabel();
ImageIcon image = ....; // Tu créer ton objet ImageIcon comme tu veux
image.setText(null);
image.setIcon(image);

le jpanel n’est qu’un conteneur pour d’autres composant de plus bas niveau.
c’est a dire qque tu peux insérer tous types d’objet grapique (jlabel,jtextfield…) ainsi que d’autres jpanel. En relation avec l’agencement des composants inclus dans un jpanel, il existe les ‘layout’. Ces objets te servent à agencer ton jpanel, en clair, à préciser commentseront disposer les composants à l’intérieur du jpanel.

En bref, tu dois inclure dans ton jpanel un composant qui te permettra d’afficher ton image. Il est aussi important mais facultatif de préciser la nature du ‘layout’, avec la méthode setLayout(…) ou à la construction de ton jpane (= new JPanel(nes BorderLayout()) ).
Concernant l’image, tu peux utiliser l’objet jlabel en lui précisant l’image à afficher (setIcon de mémoire) ou bien utiliser certaines propriétés graphique de ton jpanel.
Il faut pour cela récupérer l’environnement graphique par la méthode getGraphics (qui te retourne un objet Graphics) puis utiliser diverse méthodes de peinturlurage tel que drawImage(…).