JTree

jorgeHX

Erfahrenes Mitglied
hallo Freunde der Javabohne :)

ich habe ein kleines Problem:

Mein JTree hat zu Beginn eine root mit zwei Blättern. Man hat dann aber die Möglichkeit den (noch) Blättern eigene Blätter zuzuordnen. Danach besteht mein Baum dann aus zwei Ordnern mit eigenen Blättern.

Jetzt zu meiner Frage.
Füge ich neue Blätter hinzu, so schließt sich der Baum immer (natürlich mit einem + davor) und ich muss ihn erst öffnen bevor die neuerstellten Blätter angezeigt werden. Ich möchte aber gerne, dass der Baum dann sofort bis zu dem jeweiligen Blatt geöffnet ist.

Außerdem weiß ich nicht, wie man ein Blatt schon von Anfang an markieren kann.
Ich dachte da an die Methode setSelectionPath(), aber irgendwie weiß ich nicht wie ich der Methode den Path übergeben kann.

Nach Klick auf ein Blatt bleibt dieses natürlich markiert und
wenn ich den Path auf dem Bildschirm ausgebe, erscheint dort [Wurzel, Finanzen, Steuererklärung1], aber ich kann ja schlecht sagen path = [Wurzel, Finanzen, Steuereklärung1], um ihn schon von Anfang an zu markieren.

Hat da jemand vielleicht eine Idee für mich?
Danke
 
also

wenn du mal in die api schaust, so fällt auf, dass sich der TreePath relativ einfach generieren lässt. und zwar übergibst du im konstruktor von treepath ein array von Objects (deine nodes).
Code:
TreePath p = null;
ArrayList path = new ArrayList();
TreeNode leaf; //<-- deine leaf die du ausklappen willst
TreeNode aktOne = leaf;
path.add(leaf);

while(aktOne.getParent()!=null)
{
  aktOne = aktOne.getParent();
  path.add(aktOne);
}
Collections.reverse(path);
p = new TreePath(path.toArray());
man verzeihe mir eventuelle Synthax-Fehler =D

solltest du DefaultMutableTreeNode verwenden oder von erben, so hast dus ein wenig einfacher --> leaf.getPath(); liefert dir den Pfad

dritte Möglichkeit --> das DefaultTreeModel des JTrees hat eine methode

getPathToRoot(...) die du dir anschauen solltest

gruss kahuna
 
Zurück