# TreePath eines Objektes innerhalb eines JTree ermitteln?



## Live (12. Nov 2005)

Hallo!

Ich habe folgende Situation: In meinem Programm gibt es zur Visualsierung der Datenstruktur einen JTree (wenig überraschend  ) dieser soll - je nachdem welches Objekt selektiert wurde (z.B. über ein unabhängiges Auswahlmenü) - aufgeklappt werden. 

Ums mal praktisch zu erläutern:
_Baumstruktur:
Ordner-1
Ordner-2
...
Ordner-36
-Unterordner-1
-Unterordner-2
--Objekt-4353
--Objekt-6543
--Objekt-1320
 Unterordner-3
...
Ordner-n

Die Ordner sind im Baum nun alle geschlossen und der User wählt in einem anderen Menü das Objekt-4353 aus.
Anschließend soll der Baum passend aufklappen und das Objekt-4353 soll selektiert sein._

Für letzteres eignet sich ja die jTree Funktion "setSelectionPath(TreePath)" - nur wo bekomme ich den Treepath her, wenn sichergestellt ist, dass das Objekt exakt einmal im Baum vorkommt? Es kann jedoch vorkommen das der angezeigte Name des Objekts doppelt ist.
Ich möchte schließlich nicht bei jedem neuen Objekt zusätzlich seinen Treepath abspeichern - was wohl auf lange Sicht (Änderung der Baumstruktur aufgrund von Sortierungen) zu Problemen führen könnte und jedesmal den ganzen Baum manuell zu durchsuchen muss hoffentlich auch nicht sein.

*Gibt es eine Möglichkeit (Funktion von JTree o.ä.) bei der ich dem Baum das Objekt übergebe und er mir dessen Treepath zurück gibt bzw. etwas was in diese Richtung geht?*


----------



## AlArenal (13. Nov 2005)

Live hat gesagt.:
			
		

> *Gibt es eine Möglichkeit (Funktion von JTree o.ä.) bei der ich dem Baum das Objekt übergebe und er mir dessen Treepath zurück gibt bzw. etwas was in diese Richtung geht?*



Kommt drauf an, wie du dein TreeModel aufgebaut ist. DefaultTreeModel besitzt eine Methode "TreeNode[] 	getPathToRoot(TreeNode aNode)" und TreePath den passenden Konstruktor "TreePath(Object[] path)". Wenn du dein eigenes TreeModel gebaut hast, sollte es dir aber auch kein Problem bereiten von einem beliebigen Objelt deines ausgehend nach oben bis zum Root-Node zu wandern. Diesen Pfad speicherst du in einem Array, das Array srehst du rum und übergibts es dem Konstruktor von TreePath - et lá voilá!


----------

