Salut,
J'ai une fonction qui affiche un certains nombres d'images en miniature dans un Panel.
Chaque image est transformé en une ImageIcon qui est insérée dans un JLabel afin de pouvoir être affiché.
Je souhaite pouvoir permettre a l'utilisateur de cliquer sur une des images pour qu'elle s'affiche en grand. Pour ça il faut évidemment que je connaisse l'emplacement du fichier de l'image sur laquelle j'ai cliqué.
Et c'est au niveau du traitement du "clic" que j'ai un problème.
(J'ai simplifié le code)
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
22
23
24
25
26
27 private void loadFile(Vector filePath) { [...] for (int i = 0; i < filePath.size(); i++) { BufferedImage image = [...] ImageIcon icon = new ImageIcon(image); JLabel label = new JLabel(icon); label.setText("" + (i + 1)); MouseListener ml = new MouseAdapter() { public void mouseClicked(MouseEvent me) { JLabel label = (JLabel) me.getSource(); int i = Integer.parseInt(label.getText())-1; System.out.println("Clicks: " + i); Icon img = label.getIcon(); } }; label.addMouseListener(ml); jPanelAffichageMiniature.add(label); } }
Chaque label est associé a une méthode MouseListener. J'aimerais dans cette fonction récupérer le chemin du fichier.
-Icon img = label.getIcon(); --> Icon n'a aucune méthode précisant l'emplacement du fichier avec laquelle elle est formée.
- int i = Integer.parseInt(label.getText())-1; --> J'associe a chaque label un numéro. Je pensais après aller récupérer le nom du fichier dans le Vector filePath a l'indice correspondant. Pas génial comme méthode mais ca ne fonctionne de toute façon pas puisque dans la fonction mouseClicked je ne peux utiliser le filePath que si il est final...
EDIT: -Je viens de trouver une solution assez barbare. Je met comme text du label le chemin du fichier en police taille 0...je peux ainsi le récupérer avec getText()...si qqun a mieux...
Est-ce que vous auriez une idée sur la manière de récupérer?
Partager