# JTree Node Text ändern



## Aramis (9. Feb 2004)

Hallo,

wie kann ich auf den Text eines selektierten Blattes im JTree zugreifen,
und diesen ändern ?

Gibt's da was like node.setText() o.Ä. ???

Thx 4 hlp.


----------



## Beni (9. Feb 2004)

Wenn Du mehr über Trees wissen willst, kann das Tutorial vielleicht interessant sein:
http://java.sun.com/docs/books/tutorial/uiswing/components/tree.html

Zu deiner Frage, die nicht leicht zu beantworten ist.

Als erstes musst du mal zu dem selektierten Node kommen.

z.B.:_ tree.getSelectionPath().getLastPathComponent();_

Wie Du siehst (in der Dokumentation), wird hier ein Object zurückgegeben.

_Was_ dieses Object ist, hängt alleine von deinem Code ab. Aber sicher ist: dieses Object erzeugt den Text, der angezeigt wird, und zwar über _toString()_.

Falls du's nicht getan hast: die einfachste Variante zu kontrollieren, was du bekommst, ist das Interface javax.swing.tree.TreeNode oder das Interface javax.swing.tree.TreeModel zu überschreiben, und dem Konstruktor des JTree's zu übergeben.

Eine anderer einfache Lösung ist: Den DefaultMutableTreeNode benützen, in diesem Fall wirst du immer ein DefaultMutableTreeNode als letztes Element des Selektions-Pfades bekommen.

mfg Beni


----------



## bygones (9. Feb 2004)

weiß leider nicht genau, aber kann man nicht irgendwie über setUserObject(Object o) oder so den Text des Knoten ändern ? so habe glaub ich es immer gemacht zu haben (das Object benötigt natürlich dann eine toString() Methode)


----------



## Beni (9. Feb 2004)

deathbyaclown hat gesagt.:
			
		

> weiß leider nicht genau, aber kann man nicht irgendwie über setUserObject(Object o) oder so den Text des Knoten ändern



Nur wenn der Knoten diese Methode besitzt. Aber der Programmier kann, mit etwas Arbeit, jedes mögliche Object als Knoten definieren (und diese Objects müssen nicht ein Interface implementieren).

_setUserObject_ kommt im DefaultMutableTreeNode vor.

mfg Beni


----------



## bygones (9. Feb 2004)

@Beni: da hast du recht  :roll:


----------



## Aramis (9. Feb 2004)

Danke. 
Hab's selbst gelöst...
Und ihr hattet Recht.   :wink: 

Here we go...


```
DefaultMutableTreeNode nodehlp;
		nodehlp = (DefaultMutableTreeNode) e.getNewLeadSelectionPath().getLastPathComponent(); 
		nodehlp.setUserObject(s);	
		tm.nodeChanged(nodehlp);
```

Zur Erklärung:


```
s = string
                            e = TreeSelectionEvent
                            tm = TreeModel
```


----------

