Bonjour à tous
je réalise un projet Java pour mon examen et j'ai un problème d'affichage d'image :
- J'ai une fenetre principale dans laquelle se trouve une JCombobox qui contient une liste d'images (avec un espace en 1ère valeur pour symboliser le champs vide).
- En dessous j'ai un JLabel qui affiche l'image qui sera sélectionnée dans la JCombox, avec une image par défaut.
Bien entendu, je voudrais que quand on sélectionne une image dans la JCombobox, elle s'affiche immédiatement dans le JLabel.
Les images sont très petites, et toutes stockées dans un package "Images"
J'ai au départ bêtement fait un
cadreIMG = new JLabel(new ImageIcon("src/Images/blank.jpg") );
pour afficher l'image par défaut. Le problème s'est corsé à partir du moment où je voulais que cette image se modifie en fonction du choix dans la combobox...
Après moult lectures et différents essais, je me suis arrêté sur la méthode ImageIO, et suis parvenu à afficher mon image par défaut avec :
donc jusque là tout va bien
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 //en tête de la classe JComboBox menuImage; JLabel cadreIMG; BufferedImage buffImg; File f; .... // dans le constructeur menuImage = new JComboBox(new String[]{" ","surgele BOEUF"}); f = new File("src/Images/blank.jpg"); try { buffImg = ImageIO.read(f); cadreIMG = new JLabel(new ImageIcon(buffImg) ); }catch (IOException e) { e.printStackTrace(); }
et c'est là que je suis en galère :
je me rend bien compte que je ne devrais pas faire de
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 // écouteur de la Jcombobox public class SelecImage implements ActionListener{ public void actionPerformed(ActionEvent e) { System.out.println("selection image OK"); String typeIMG = (String) menuImage.getSelectedItem(); if (typeIMG.equals("surgele BOEUF")){ f = new File("src/Images/surgel_boeuf.jpg"); try { buffImg = ImageIO.read(f); cadreIMG = new JLabel(new ImageIcon(buffImg) ); System.out.println("test affichage image surgele boeuf"); cadreIMG.revalidate(); }catch (IOException e2) { e2.printStackTrace(); } } } }
cadreIMG = new JLabel(new ImageIcon(buffImg) );
dans l'écouteur, mais je ne trouve pas la bonne syntaxe
un petit coup de main serait bienvenu, merci
Partager