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 :

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    
 
    }
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".
Quelqu'un aurait-il un début de solution ?
Merci d'avance et a+ ^^