Mise à jour jtree

Résolu
Signaler
Messages postés
3
Date d'inscription
lundi 2 mai 2005
Statut
Membre
Dernière intervention
21 juillet 2005
-
Messages postés
11
Date d'inscription
mercredi 20 août 2003
Statut
Membre
Dernière intervention
21 juillet 2005
-
Bonjour à tous,

Voilà mon problème :

J'utilise le design pattern MVC. Donc j'ai un modéle et une des vue de mon modéle est un jtree. J'ai une classe, TreeFormater, qui , à partir de mon modèle permet de construire un DefaultTreeModel. Ensuite, j'instancie un JTree et je fais un setModel(mon DefaultTreeModel) à ce JTree.

Mon problème est pour la mise à jour de ce JTree, j'ai l'impression que je suis obligé de refaire un setModel à chaque fois que mon modèle change...

C'est pas terrible car toutes les branches séléctionnées par l'utilisateur se referment...

5 réponses

Messages postés
11
Date d'inscription
mercredi 20 août 2003
Statut
Membre
Dernière intervention
21 juillet 2005
1
C'est normal qu'il le referme. En verité il ne le referme pas, il supprime tout les noeuds, puis ajouter les noeuds qui sont dans le modèle. Pour modifier ton arbre sans qu'il se referme, il faut recupèrer le model de l'arbre et y ajouter/supprimer les noeuds voulu. Il y a le méthode getModel() du JTree qui récupère le model, la méthode getRoot() du modèle qui récupère le noeud principal de l'arbre et se noeud, tu le converti en un DefaultMutableTreeNode, ou si tu as creer une classe pour les noeuds en cette classe et après tu peux te déplacer dans les noeuds et en ajouter/supprimer avec le méthode add()/remove() du DefaultMutableTreeNode, et après avoir fait le ajout/suppression appeler la méthode updateUI() du JTree pour qu'il affiche l'arbre modifier à l'écran.
Messages postés
11
Date d'inscription
mercredi 20 août 2003
Statut
Membre
Dernière intervention
21 juillet 2005
1
Salut, essaye d'appeler le methode updateUI() du JTree après avoir fait tes mises à jour
Messages postés
3
Date d'inscription
lundi 2 mai 2005
Statut
Membre
Dernière intervention
21 juillet 2005

je viens d'essayer, ca a le même comportement que update()...
Messages postés
11
Date d'inscription
mercredi 20 août 2003
Statut
Membre
Dernière intervention
21 juillet 2005
1
Postes le code qui fait les mises a jour et je pourrais peut-être trouver quoi faire
Messages postés
3
Date d'inscription
lundi 2 mai 2005
Statut
Membre
Dernière intervention
21 juillet 2005

Et bien j'ai 3 vues : un arbre, du code xml et du texte. Le probleme est que Jtree.setModel referme l'arbre à chaque fois...

public void update(Observable o, Object arg) {
this.setTitle("Package view : " + model.getName());
xmlTree.setModel(model.formatTree());
packageCodeArea.setText(model.formatText());
xmlCodeArea.setText(model.formatXML());
}
}

model.formatTree() retourne un DefaultTreeModel.