Bonjours,
voilà maintenant quelque temps que je suis bloqué sur un de mes programmes à cause d'un JCombobox. Mon problème est que lorsque je clique sur le JCombobox 2 événements sont créés au lieu d'un seul.
J'ai bien vérifié je ne rattache le listener qu'une fois et au bon bouton.
Voilà une partie de mon code:
Ce bout de code se trouve dans un constructeur.
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62 final JComboBox figure = new JComboBox(new String[]{"cercle","rectangle","quadrilatere","triangle"}); figure.addItemListener(new ItemListener(){ public void itemStateChanged(ItemEvent e){ fig = null; dessin.removeAllListener(); if (newFig.isSelected()){ switch (figure.getSelectedIndex()){ case 0: fig = new UnCercle(); break; case 1: fig = new UnRectangle(); break; case 2: fig = new UnQuadrilatere(); break; case 3: fig = new UnTriangle(); break; } if (fig != null) dessin.removeAllListener(); dessin.construit(fig,couleurFig); } } }); final JComboBox couleur = new JComboBox(new String[]{"rouge","vert","bleu","jaune"}); couleur.addItemListener(new ItemListener() { public void itemStateChanged(ItemEvent e){ switch (couleur.getSelectedIndex()){ case 0: couleurFig = Color.red; break; case 1: couleurFig = Color.green; break; case 2: couleurFig = Color.blue; break; case 3: couleurFig = Color.yellow; break; } System.out.println(manip.isSelected()); System.out.println(dessin.figureSelection() != null); if (manip.isSelected() && dessin.figureSelection() != null){ // permet de changer la couleur d'une figure lors d'une manipulation dessin.figureSelection().changeCouleur(couleurFig); dessin.repaint(); System.out.println("test"); } if (fig != null && newFig.isSelected()){ // Annule la creation en cours pour la recommencer avec la nouvelle couleur dessin.removeAllListener(); dessin.construit(fig,couleurFig); } if (trace.isSelected()){ // change la couleur pendant un trace a main levee dessin.trace(couleurFig); } } });
J'ai testé grâce à la méthode getItemListeners() les listeners qui sont créés, je l'ai appliqué sur ma variable couleur et grâce à un system.out.println j'ai obtenu ceci:
Ce sont les 2 événements générés lorsque je change la couleur via le bouton. Je ne comprend pas pourquoi il y en a 2 et cela me gène pour la suite de mon programme.Fenetre$1PanneauChoix$2@53ba3d
javax.swing.plaf.basic.BasicComboPopup$Handler@e80a59
Si quelqu'un peut m'éclairer merci d'avance.
Partager