English Deutsch Français Italiano Español Português 繁體中文 Bahasa Indonesia Tiếng Việt ภาษาไทย
Toutes les catégories

bonjour,
voila mon probleme jai fait une fonction
jComboBox_itemStateChanged(ItemEvent e)
pour savoir lorsque un item de ma comboBox change et traiter les differnet cas possible. Simplement dans cette meme fonction je fait jComboBox.setSelectedItem(maString); pour changer l'item selectionner et cela ne marche pas.
Cela fonction si je le fait sur une autre jComBox mais pas sur celle de la fonction
Comment pourrais je regler ce probleme ?
merci

2007-02-11 05:45:35 · 1 réponses · demandé par Anonymous dans Informatique et internet Programmation

1 réponses

Je ne suis pas sûr d'avoir compris la question mais je vois deux possibilités.

Pour que ta jCombobox réagisse aux événements tu dois créer une classe implémentant ItemListener :
class Ecouteur implements ItemListener {
public void itemStateChanged(ItemEvent e) {
// quelque chose dedans
}
}
puis associe une instance à la jComboBox :
jcombobox.addItemListener (new Ecouteur());

Maintenant si dans ta fonction tu fais un appel à setSelectedItem, tu risques d'avoir un problème car tu vas déclencher un appel à itemStateChanged, qui va appeler setSelectedItem, etc. ça fait un appel récursif qui va déborder dans la pile!

Comment éviter ça? Il faut que tu regardes quel type d'événement a été déclenché : le paramètre ItemEvent e qui est passé n'est pas là pour rien, tu dois en particulier regarder la valeur de e.getStateChange pour savoir si c'est l'événement "je désélectionne la valeur x" ou "je sélectionne la valeur y", car chaque changement va provoquer les deux (désélection de l'ancienne valeur et resélection de la nouvelle). De plus regarde la nouvelle valeur dans e.getItem : et décide alors si tu dois faire le setSelectedItem ou non!

2007-02-11 08:40:18 · answer #1 · answered by t_cordonnier 7 · 0 0

fedest.com, questions and answers