Accueil > Forum > > > > JTreeModel
JTreeModel
mercredi 1 juin 2005 à 12:45:55 |
JTreeModel

emilien81
|
Bonjour a tous,
J'ai un probleme avec un arbre de type JTree en Java. En fait j'ai des blancs qui apparaissent et lorsque je veux ajouter un noeud à l'arborescence, il faut que je rafraichisse tout l'arbre pour qu'il le prenne en compte. Le soucis c'est que je ne sais pas par ou commencer par prendre mon probleme.
je crois que le plus simple c d'abord de vous montrer des bouts du code :
//entete de la classe + constructeur public class ArbreModel implements TreeModel, Observer { private Root root= null; private ArrayList listener = new ArrayList(); public ArbreModel(Root _root) { this.root=_root; rootChanged(); this.reseau.addObserver(this); }
________________________
//l'ajout d'un noeud public void nodeAdded(TreeElement node) { node.addObserver(this); TreePath path = node.getParent().makeTreePath(); int childIndex[] = {node.getParent().getIndexOfChild(node)}; Object nodes[] = {node}; //averti de l'ajout d'un noeud TreeModelEvent event = new TreeModelEvent(this, path, childIndex, nodes); for (int i=this.listener.size()-1; i>=0; i--) { TreeModelListener l = (TreeModelListener) this.listener.get(i); l.treeNodesInserted(event); } }
ce que j'ai remarqué c'est que si je retire le addObserver dans le constructeur ou encore si je met TreePath path = node.makeTreePath(); à la place de TreePath path = node.getParent().makeTreePath(); dans l'ajout d'un noeud alors les blancs disparaissent mais par contre si je veux ajouter un noeud ensuite il faut que je rafraichisse tout l'arbre pour voir apparaitre cet ajout.
je ne sais vraiment pas comment debuguer ca, si quelqu'un a une idée pour me sortir de la je suis preneur. Merci
Emilien
|
|
mercredi 1 juin 2005 à 13:01:09 |
Re : JTreeModel

mep
|
Deja pou eviter de reloader tout l'arbre tu peux te contenter de
reloader le parent du noeud que tu ajoute. Si ton parent est le root ca
revient au meme que de reloader tout l'arbre.
|
|
mercredi 1 juin 2005 à 13:04:57 |
Re : JTreeModel

emilien81
|
en fait je le fais deja mais c'etait pour simplifier l'explication mais le soucis de reloader c que ca referme tous les noeuds qui sont ouvert
|
|
mercredi 1 juin 2005 à 14:01:26 |
Re : JTreeModel

mep
|
Ba essai de faire une fonction que sauvegarde le depliage/repliage de chaque noeud avant l'ajout et qui le reproduit apres.
|
|
mercredi 1 juin 2005 à 14:31:10 |
Re : JTreeModel

emilien81
|
j'y avais pensé mais ca risque de ralentir le temps d'execution de l'apllication et je sais que c possible de le faire sans. ca serait dommange de faire comme ca, alors que Java est assez bien fait pour gérer ce type d'evenement.
|
|
mercredi 1 juin 2005 à 14:42:23 |
Re : JTreeModel

mep
|
Pour optimiser tu peux partir du noeud parent pour sauver les etats. Sinon je ne vois pas d'autre solution ...
|
|
mercredi 1 juin 2005 à 15:17:00 |
Re : JTreeModel

emilien81
|
merci, je vais surement faire ca en attendant de trouver mieux
|
|
jeudi 2 juin 2005 à 09:23:19 |
Re : JTreeModel

emilien81
|
Réponse acceptée !
voila le code que j'ai mis en place:
public class ArbreExpandListener implements TreeWillExpandListener { private ArrayList listeNoeudOuvert = new ArrayList(); private boolean saveExpandListener = true; private JTree tree = null; private static ArbreExpandListener arbreListener = null; public ArbreExpandListener() { } public static ArbreExpandListener getInstance() { if (arbreListener==null) { arbreListener = new ArbreExpandListener(); } return arbreListener; } public void treeWillExpand(TreeExpansionEvent evt) throws ExpandVetoException { if (this.saveExpandListener==true) { this.tree = (JTree)evt.getSource(); TreePath path = evt.getPath(); this.listeNoeudOuvert.add(path); } }
public void treeWillCollapse(TreeExpansionEvent evt) throws ExpandVetoException { if (this.saveExpandListener==true) { this.tree = (JTree)evt.getSource(); TreePath path = evt.getPath(); TreeElement elt = (TreeElement) path.getLastPathComponent(); for (int i=0; i<elt.getChildCount(); i++) { TreePath pathChild= ((TreeElement) elt.getChild(i)).makeTreePath(); if (this.tree.isExpanded(pathChild)) { this.tree.collapsePath(pathChild); } } this.listeNoeudOuvert.remove(path); } } public void blockSaveExpandListener() { this.saveExpandListener = false; } public void unblockSaveExpandListener() { this.saveExpandListener = true; } public void reExpandAllExpandedNodes() { if (this.tree!=null) { for (int i=0; i<this.listeNoeudOuvert.size(); i++) { this.tree.expandPath((TreePath) this.listeNoeudOuvert.get(i)); } } } }
|
|
Cette discussion est classée dans : arbre, path, ajout, root, node
Répondre à ce message
Sujets en rapport avec ce message
ajout d'un nouveau volume [ par assuryan ]
Bonjour,voila mon probleme :Pour le moment j'ai construit mon univers de sorte que l'utilisateur voit une dalle qu'il peut manipuler.Lorsqu'il appuis
[Java] Rechercher un élément dans un arbre double chaîné!!! [ par dianeti ]
Salut tout le monde,j'ai un petit problème un peu chev'lu:je crée un arbre au fur et mesure que je parcours un fichier de données afin de trouver l'ob
xml ... petits trucs, comprends pas trop [ par heraclesss ]
Salut à tous ! Je débute en XML avec Java. j'aimerais comprendre un truc, je n'arrive pas à trouver la réponse. Tout d'abord, j'ai choisis de dévelo
algo d'ajout pour une table (à l'aide d'arbre) de manière itéative [ par yanok06 ]
tout est dis dans le tittre. Si quelqu'un peut me proposer un algo cela serait super cool !
stucture d'arbre [ par jeff705 ]
Bonjour, j'ai une fonction (java) qui lit une structure d'arbre (généalogique). Le noeud a chaque fois 2fils: public void lire_arbre(Node n) {
Pointer vers le noeud jumeaux d'un arbre apres selection d'un click droit [ par ChristOffAum ]
Bonjour à tous, Voilà je vous explique mon problème, j'ai deux arbre XML en parallèle, ils sont censé avoir la même structure, ou à défaut une légère
Zoom to node [ par barraq ]
Bonjour a tous, Je débute en j3D et j'ai une petite question... Je cherche une fonction permetant de zoomer ou de-zoomer etant donné un noeud, je
[Windows] Inclure un .dll au PATH sans utiliser la console. [ par zinZ ]
Bonjour, J'ai programmé un une interface graphique en Java 1.4 pour Windows. Elle lit des fichier au format CDF. La distribution de ce format fournit
Appel de servlet dans un .ear [ par NewJavaLearner ]
Salut,j'ai une servlet packagé biensur dans un .war packagé à son tour dans un .earje n'ai pas réussi à appelé la servlet malgré que j'ai fait<a href=
probléme avec la boucle for [ par hassenra ]
Bonjour,je veux utilié une classe dans mon projet mais elle contient ce codefor (List t1 : trees1) { for (List t2 : trees2) <p
Livres en rapport
|
Derniers Blogs
GESTION D'EXCEPTION AVEC LES TASKSGESTION D'EXCEPTION AVEC LES TASKS par richardc
Nous avons vu dans un précédent article comment utiliser Task pour effectuer des opérations dans un autre thread.
Malheureusement, comme tout le monde n'est pas parfait, il se peut que cette exécution se passe mal et qu'une exception se produise.
La...
Cliquez pour lire la suite de l'article par richardc DéMARRONS AVEC LES TASKSDéMARRONS AVEC LES TASKS par richardc
Que vous le vouliez ou non, le développement multi-tâche est maintenant une obligation pour toute nouvelle application. Il est donc vital d'en comprendre les mécanismes et de s'y mettre le plus tôt possible.
En attendant le .NET Framework 4.5 avec le...
Cliquez pour lire la suite de l'article par richardc SLIDE & DéMO TECHDAYS 2012 - FAST & FURIOUS XAML APPSSLIDE & DéMO TECHDAYS 2012 - FAST & FURIOUS XAML APPS par Vko
Retrouvez les slides et les démo de ma session Fast & Furious XAML Apps. A ceux qui se posent la question : "est-ce que le code de la DataGrid est disponible?", je vous répondrais "pas encore". Je vais mettre en place un projet codeplex pour part...
Cliquez pour lire la suite de l'article par Vko XNA IS DEAD!XNA IS DEAD! par richardc
Depuis la semaine dernière (et grâce aux TechDays 2012), je me penche activement sur la nouvelle version de Windows, aka Windows 8. Vous me direz, il était temps puisque la première preview date de Septembre dernier.
OK. Remarquez, on n'en est qu'aux...
Cliquez pour lire la suite de l'article par richardc TECHDAYS PARIS 2012 : WINDOWS SERVER "8" QUOI DE 9 !TECHDAYS PARIS 2012 : WINDOWS SERVER "8" QUOI DE 9 ! par ROMELARD Fabrice
Speakers: Fabrice Meillon et Stanislas Quastana Cette session est basée entièrement sur celle donnée lors de la BUILD cet hiver. Il n'y a pas d'ajout d'information en rapport avec cet évènement passé. Windows 8 Server sera intégralem...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Forum
RE : COURRE : COUR par barhoum1111
Cliquez pour lire la suite par barhoum1111 RE : COURRE : COUR par Julien39
Cliquez pour lire la suite par Julien39
Logiciels
DocTranslate (V3.1.0.0)DOCTRANSLATE (V3.1.0.0)DocTranslate est un traducteur de document Microsoft Word, PowerPoint et Excel. Il permet d'autom... Cliquez pour télécharger DocTranslate Tribler (2012)TRIBLER (2012)Tribler est un client pair à pair (P2P/Peer-to-Peer) open source avec la capacité de regarder des... Cliquez pour télécharger Tribler OneSwarm (2012)ONESWARM (2012)Le peer-to-peer qui protège votre vie privée, c'est OneSwarm.
Ce logiciel de peer-to-peer crypté... Cliquez pour télécharger OneSwarm PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System
|