Select liste1 -> MAJ liste2, select list2 puis reselection liste1 -> null pointer
Bonjour a tous j'ai essayer de faire le titre le plus clair possible.
J'ai 2 listes qui se font face, chacune a son propre ListSelectionListenner.
Les 2 listes sont dans une classe qui hérite de JFrame et implémente Observer.
Les 2 listenners sont dans 2 classes séparées qui héritent de Observable en implémentant ListSelectionListenner
Dans le liste1Listenner
Code:
1 2 3 4 5 6 7
| public void valueChanged(ListSelectionEvent e) {
JList list = (JList)e.getSource();
if (!list.getValueIsAdjusting() ){
// creation d'un tableau d'objet grace a la selection list.getSelectedValue()
this.setChanged();
this.notifyObservers(unTableauDObjet);
} |
notifyObservers va lancer cette méthode update :
Code:
1 2 3 4 5 6 7 8 9 10 11 12
| public void update(Observable obs, Object obj) {
if(obs==this.liste1Select){
// ...... Construction d'un tableau d'elements avec obj
this.modelList2.clear();
for (Element elem : elements){
this.modelList2.addElement(elem);
}
}
else if (obs==this.liste2Select){
// ...... mise a jour d'un textField avec un String
}
} |
Le problème survient quand je fait la séquence suivante :
1 - Sélection dans la liste1
>La MAJ de la liste2 s'effectue
2 - Sélection dans la liste2
(La MAJ du JtextField s'effectue)
3 - Sélection dans la liste1
>Null Pointer Exception dans le listenner de la Liste2
4 - Sélection d'un autre élément dans la liste1
>Retour étape 1
Voici le code du liste2Listenner :
Code:
1 2 3 4 5 6 7 8 9
|
public void valueChanged(ListSelectionEvent e) {
JList list = (JList)e.getSource();
if (!list.getValueIsAdjusting() ){
// ...... récupération d'un String dans l'objet sélectionné via list.getSelectedValue()
this.setChanged();
this.notifyObservers(monString);
}
} |
C'est a croire que le listenner de la liste2 est appelé alors que je clique sur la liste1
Merci de l'aide que vous pourrez m'apporter.
:coucou: