Sollte eine aufgeklappten und einen geschlossenen Tree ergeben:
1 | public class JTreeTest {
|
2 | public static void main(String[] args) {
|
3 | JFrame frame = new JFrame("Tree Test");
|
4 | frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
|
5 | MutableTreeNode root = new DefaultMutableTreeNode("Root is gut");
|
6 | DefaultTreeModel model = new DefaultTreeModel(root);
|
7 | MutableTreeNode newChild = new DefaultMutableTreeNode("I'm what I'm");
|
8 | model.insertNodeInto(newChild, root, 0);
|
9 | DefaultMutableTreeNode otherChild = new DefaultMutableTreeNode(
|
10 | "A Childs Child");
|
11 | model.insertNodeInto(otherChild, newChild, 0);
|
12 | JTree tree = new JTree(model);
|
13 | frame.add(new JScrollPane(tree));
|
14 | frame.add(new JScrollPane(new JTree(model)), BorderLayout.EAST);
|
15 | frame.setSize(400, 400);
|
16 | frame.setLocationRelativeTo(null);
|
17 | frame.setVisible(true);
|
18 | tree.scrollPathToVisible(new TreePath(otherChild.getPath()));
|
19 | }
|
20 | }
|
Nur so nebenbei:
* Ein Frame hat schon ein Contentpane welches ein Boxlayout hat
* mußt du setVisible nicht im SwingThread aufrufen wenn es dein letzte
Aktion des Mainthreads ist
* würde ich wenn die ganze show() Methode lieber im EventThread starten,
oder eine Swingworker nutzen wenn das aufbauen des Trees sehr
Zeitintensiv ist.
* Bevor du castest solltest du mit instanceof prüfen ob der Typ
stimmt! Verhindert auch gleichzeitig den Zugriff auf ein null Objekt.
Um in einem Bestehenden Tree alles aufzuklappen (wieso eigentlich?)
hilft dir vieleicht auch das weiter:
http://www.java2s.com/Code/Java/Swing-JFC/ExpandingorCollapsingAllNodesinaJTreeComponent.htm