bourrin mais pas très "beau"...
Pour empêcher le chargement, j'ai alors utilisé une variable de type boolean :
Code:
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
|
/**
* 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() {
enChargement = true;
for (Saison saison : saisons)
cboSaisons.addItem(saison);
cboSaisons.setSelectedItem(null);
enChargement = false;
int count = 0;
if ( (count=cboSaisons.getItemCount())>0 )
cboSaisons.setSelectedIndex(count-1);
}
});
}
} |
Donc pour charger ma combobox, j'initialise ma variable à true, et quand j'ai terminé l'ajout de mes éléments, je passe à false.
Ainsi, dans ma gestion de l'evènement, si en cours de chargement de la combo, je ne fais pas mon traitement :
Code:
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 ( !enChargement && cboSaisons.getSelectedIndex()>=0 )
grille.load((Saison) cboSaisons.getSelectedItem());
}
} |
Ca marche très bien, mais peut-on faire quelque chose de plus "propre" ?
:roll:
Merci pour vos suggestions