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
Code : Sélectionner tout - Visualiser dans une fenêtre à part
cboSaisons.addItem(saison);
ma fonction itemStateChanged est appelée !

Comment y remédier proprement ?