Bonjour,
j'ai une combobox et des actions qui s'effectuent lorsque l'on sélectionne un "item".
Or quand je remplis ma combobox, itemStateChanged est appelée à chaque élément ajouté et ça plante l'affichage !
Donc je charge ma combobox par un thread (car mes valeurs sont dans une base de données) :
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 /** * Classe Thread * Chargement des paramétrages Saisons */ private class LoadSaisonsThread extends Thread { @Override public void run() { final SaisonsListe<Saison> saisons = new SaisonsListe<Saison>(fiche.getAdresse()); saisons.load(); // on renvoie le rafraichissement à l'EDT SwingUtilities.invokeLater( new Runnable() { @Override public void run() { for (Saison saison : saisons) cboSaisons.addItem(saison); cboSaisons.setSelectedItem(null); int count = 0; if ( (count=cboSaisons.getItemCount())>0 ) cboSaisons.setSelectedIndex(count-1); } }); } }
Et quand on choisit manuellement la saison, ça exécute un chargement spécifique :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 @Override public void itemStateChanged(ItemEvent e) { if ( e.getStateChange()==ItemEvent.SELECTED ) { // chargement d'une saison if ( cboSaisons.getSelectedIndex()>=0 ) grille.load((Saison) cboSaisons.getSelectedItem()); } }
Donc chaque fois que j'ajoute un élément
ma fonction itemStateChanged est appelée !
Code : Sélectionner tout - Visualiser dans une fenêtre à part cboSaisons.addItem(saison);
Comment y remédier proprement ?
![]()
Partager