# JTree: Items hinzufügen



## pktm (8. Mrz 2008)

Hallo!

Ich habe mir mit dem Guibuilder von Netbeans eine kleine GUI zusammen geklickt, die über ein Eingabefeld, einen Button und einen JTree verfügt.
Jetzt würde ich gerne bei dem Klick auf diesen Button etwas in den Baum einfügen.
Ziel ist es, eine genrierte Baumstruktur in diesen Baum einzufügen, aber vorerst reicht es mir, wenn mir jemand verrät, wie ich überhaput etwas da einfüge.

Ich habe durch den GUI-Builder die Variable jTree1 definiert:

```
private javax.swing.JTree jTree1;
```

Da muss jetzt etwas rein, z.B. ein String, der als Wuzelknoten erscheint.
Wie mache ich das?

Mein Code bislang:

```
// Der Event für's Button-Anklicken.
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
		
		DefaultMutableTreeNode root = new DefaultMutableTreeNode("Root");
		
		// jTree1 ist das Teil auf der GUI (glaube ich)
		jTree1 = new JTree(root);
		jTree1.setRootVisible(rootPaneCheckingEnabled);

}
```

Ich vermute, die Frage ist recht trivial, aber ich bin mit den JavaDocs noch nicht warm geworden.

Grüße, pktm


----------



## L-ectron-X (8. Mrz 2008)

Dann guck doch auch erst noch mal in die FAQ.


----------



## pktm (8. Mrz 2008)

L-ectron-X hat gesagt.:
			
		

> Dann guck doch auch erst noch mal in die FAQ.



Ok, hab ich vorher, und nach deinem - mal rational gesehen - völlig überflüssigen Beitrag auch. Ich habe auch schon Dokumentationen un Tutorials gelesen.
Genauso gut könnte ich sagen: probiers doch mal aus.

Das bringt nichts -.-


----------



## L-ectron-X (8. Mrz 2008)

Ich weiß gar nicht, warum du mich hier voll löffelst?! Woher soll ich wissen, was du schon gelesen hast, um deinem Problem auf die Spur zu kommen? In der FAQ ist doch schon das Wichtigste erklärt, auch zu deinem Problem...
Und wenn du den FAQ-Beitrag gelesen hast, kannst du doch auch nachfragen, wenn dort etwas unverständlich war.


----------



## Gast (9. Mrz 2008)

Zu deiner Frage: weil die Antwort unbrauchbar ist.

Mehr Information:
Mein Problem ist, dass ich bereits einen JTree habe. Der wird auf der GUI angezeigt. Ich kann den auch anklcken und modifizieren.
Die Werte daraus kommen irgendwo aus einer Voreinstellung durch den GUI-Builder.
Ich will nun, wenn der Button gedrückt wird, den Baum leeren und neu befüllen.
Dazu erstelle ich dann ein DefaultMutableTreeNode-Objekt mit Kindern usw.
Die müsste ich dann irgendwie an den Baum anhängen.
Aber: mit dem was in der FAQ steht klappt es nicht. Da stehgt nämlich, dass ich einen Konstruktir für einen JTree aufrufen soll und das Ergebnis der Variable für den JTree auf der GUI zuordnen soll.
Das geht aber nicht, da ändert sich nichts. Zumindest ist das Resultat n icht sichtbar.

Wie also bekomme ich die Elemente da rein?
Es gibt die Funktion add() für DefaultMutableTreeNode-Objekte.
Ich habe eine variable jTree1, die das Teil auf der GUi bezeichnet.

und nun?


----------



## Beni (9. Mrz 2008)

Du kannst dem JTree jederzeit per "setModel" ein neues TreeModel - und somit neuen Inhalt - geben. Einen (DefaultMutable)TreeNode kann man übrigens in ein DefaultTreeModel reinpacken, und so ebenfalls "setModel" verwenden. (ich kann es mir nicht verkneiffen: da du ja schon alle Literatur studiert hast, ist das alles nichts neues für dich... :wink: )


----------



## pktm (9. Mrz 2008)

Ah cool, das funktioniert. Wenngleich es mir auch ein bischen schwer fiel, zu verstehen, *was* genau da zu modifizieren ist, so habe ich es nun doch so hinbekommen:

```
DefaultMutableTreeNode root = new DefaultMutableTreeNode("root");
        JTree t2 = new JTree(root);
        jTree1.setModel(t2.getModel());
```

Ich persönlich habe bislang immer nur mit einem wesentlich einfacher gestrickten System gearbeitet: http://search.cpan.org/~ddumont/Tk-TreeGraph-1.030/TreeGraph.pm
Da gibt's eine clear() - und eine addNode() - Methode. Daher wohl auch die Verwirrung.

Grüße, pktm


----------



## Beni (9. Mrz 2008)

Also wirklich aber...

```
JTree t2 = new JTree(root); 
jTree1.setModel(t2.getModel());
```
...  :roll: ...

Lies meinen kleinen Text bitte nochmal, bemerke das Wort "DefaultTreeModel".


```
jtree.setModel( new DefaultTreeModel( root ));
```


----------

