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:

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);
						}
 
					}
				});
Ce bout de code se trouve dans un constructeur.

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:

Fenetre$1PanneauChoix$2@53ba3d
javax.swing.plaf.basic.BasicComboPopup$Handler@e80a59
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.
Si quelqu'un peut m'éclairer merci d'avance.