Refresh JTree (autre version...) - Java - Programmation
Marsh Posté le 13-07-2006 à 15:34:05
brisssou a écrit : j'y entrave rien, c'est qu'une idée, mais si tu fais un truc genre monJTree = new JTree() quand tu veux le mettre à jour, ça marche pas ? |
ben non, c'est ce que je fais puisque je relance un nouvel appel à cette frame, donc je lance un nouveau thread qui va la gérer mais l'appel à pack() sur la frame fait réapparaitre l'ancien contenu, puisqu'il est dit que l'appel à pack() sur une frame précédemment "disposée" permet de récupérer les valeurs précédemment désallouée (quote de la Javadoc):
Citation : The Window and its subcomponents can be made displayable again by rebuilding the native resources with a subsequent call to pack or show. The states of the recreated Window and its subcomponents will be identical to the states of these objects at the point where the Window was disposed (not accounting for additional modifications between those actions). |
Marsh Posté le 13-07-2006 à 15:16:24
Petit soucis avec un JTree : j'ai une fenêtre d'invite frameInvit qui permet de choisir un fichier xml qui sera affiché ensuite dans un JTree dans une autre frame frameAppli. L'implémentation marche, l'affichage également.
J'ai ajouté sur frameAppli un bouton de fermeture qui effectue un dispose sur frameAppli et qui permet de choisir un nouveau fichier xml (ou bien simplement de quitter l'application) depuis frameInvit. Le problème : lorsque j'ouvre un nouveau fichier, le JTree charge effectivement le nouveau fichier xml, mais conserve également l'ancien, puisque le dispose() effectué sur la frame frameAppli libère les ressources mais ces ressources peuvent être à nouveau affichées par un nouvel appel à pack() comme précisé dans la Javadoc de la méthode (ce qui sera évidemment fait lors du nouvel affichage...). Du coup, je me retrouve avec le noeud racine ayant 2 ensembles de fils : le 1er correspondant au 1er fichier, le 2nd au 2nd fichier.
Je charge le contenu du JTree en passant par un DefaultMutableTreeNode racine.
Pour cela, j'ai essayé :
Comment peut-on faire proprement un refresh du contenu du JTree ?