Bonjour,
J'ai un petit souci avec un JComboBox.
Je montre mon interface:
L'idée est que lorsque CBX_ClasseOrigine contient une classe de niveau 5eme (5A, 5B,...) alors CBX_ClasseNouvelle me propose les classes de même division. Pareil si c'est un niveau 4eme,3eme,...
Dans la première image on voit que cela ne fonctionne pas alors que dans la seconde oui.
En fait lorsque j'ouvre le logiciel pas de problème: à chaque changement d'item dans CBX_ClasseOrigine il y a mise à jour dans CBX_ClasseNouvelle.
Le souci survient lorsque j'ajoute ou enlève une classe via mon interface.
A ce moment CBX_ClasseNouvelle ne se met pas à jour alors que les deux autres CBX pas de problème: si j'enlève une classe elle disparait de CBX_ClasseOrigine.
Je mets ci-dessous le code qui me permet de mettre à jour du dernier JComboBox en fonction de la sélection du premier:
Ce qui m'intrigue c'est que le changement d'item dans CBX_ClasseOrigine n'entraine pas de changement dans le dernier JComboBox.
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 if(e.getSource()==CBX_ClasseOrigine){ if(CBX_ClasseOrigine.getItemCount()!=0){ CBX_Eleve.removeAllItems(); CBX_ClasseNouvelle.removeAllItems(); String classeOrigine = CBX_ClasseOrigine.getSelectedItem().toString(); ArrayList<String> liste = new ArrayList<>(); Collection<Eleve> c = L_Classes.obtenirListeClasses().get(classeOrigine).quelleListe().values(); for(Eleve eleve : c){ liste.add(eleve.nom+" "+eleve.prenom); } Collections.sort(liste); for(int j=0;j<liste.size();j++){ CBX_Eleve.addItem(liste.get(j)); } char division = classeOrigine.charAt(0); for(int i=0; i<tab_Classes.length;i++){ if(tab_Classes[i].charAt(0)==division){ CBX_ClasseNouvelle.addItem(tab_Classes[i]); jop_Test.showMessageDialog(this, tab_Classes[i]); <<<<<<TEST>>>>>>>>> } } CBX_ClasseNouvelle.setSelectedIndex(0); } else CBX_ClasseNouvelle = new JComboBox<>(); }
J'ai placé pour tester un JOptionPane (jop_test) pour tester si ca passait bien dans la boucle et si mon tabclasse (qui contient toutes les classes enregistrées) était à jour et bien.......je passe dans la boucle et tout est à jour. Et pourtant mon CBX_ClasseNouvelle.addItem(tab_Classes[i]) n'ajoute rien !
Du mal à comprendre mon souci.
J'ai essayé avec le pas à pas pour voir mes variables mais j'ai du mal à gérer cela.
Je ne comprends pas trop mon problème.
Comment je peux passer dans la boucle qui met à jouer mon ComboBox et ne pas voir les addItem faire leur boulot?
Merci par avance.
PS: je cherche, je cherche et je cherche. Je suis tombé sur la notion de revalidate. En gros rafraichir c'est ca? Ca pourrait expliquer pourquoi un changement n'est pas pris en compte si je ne relance pas?
Mais pourquoi alors mon premier JComboBox est à jour dans ce cas?
Si quelqu'un à des idées....
Partager