Salut, j'ai un problème sur un JTree que je n'arrive pas à résoudre.
J'ai une classe FullTextTree qui contient un JTree et qui implémente TreeSelectionListener. Voici le code simplifié de valueChanged() de FullTextTree :
Le problème est que si je charge un FullTextTree préalablement sérialisé, quand je clique sur un noeud, l'action est exécutée 2 fois. Si ce n'est pas un objet sérialisé cela fonctionne très bien. Il n'y a pourtant qu'un seul listener sur le JTree : System.out.println("fullTextTree:valueChanged: nb listeners: " + this.tree.getTreeSelectionListeners().length); // debug m'affiche bien "1".
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 public void valueChanged(TreeSelectionEvent e) { this.currentNode = (DefaultMutableTreeNode)tree.getLastSelectedPathComponent(); if(this.currentNode == null) { return; } // Récupération de l'objet du noeud Object nodeObject = this.currentNode.getUserObject(); // Si l'objet contenu dans le noeud cliqué est un NodeElement if(nodeObject.getClass().equals(NodeElement.class)) { System.out.println("Noeud cliqué: " + nodeObject + "((NodeElement)nodeObject).fullTextOffset: " + ((NodeElement)nodeObject).fullTextOffset ); // debug System.out.println("fullTextTree:valueChanged: nb listeners: " + this.tree.getTreeSelectionListeners().length); // debug }
Quelqu'un aurait-il un début de solution ?
Merci d'avance et a+ ^^
Partager