Refresh JTree (autre version...)

Refresh JTree (autre version...) - Java - Programmation

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é :

  • de passer par le modèle du JTree et de recharger le modèle et updater --> marche pas
  • de charger un modèle null et de recharger le modèle et updater --> marche pas


Comment peut-on faire proprement un refresh du contenu du JTree ?

Reply

Marsh Posté le 13-07-2006 à 15:16:24   

Reply

Marsh Posté le 13-07-2006 à 15:26:42    

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 ?


---------------
HFR - Mes sujets pour Chrome - Firefox - vérifie les nouveaux posts des topics suivis/favoris
Reply

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).

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed