JTree öffnen/offen halten

  • Themenstarter Themenstarter Hendrik
  • Beginndatum Beginndatum
H

Hendrik

Hallo,
ich möchte von Anfang an alle Ebenen eines JTree's geöffnet haben. Wüsste da jmd von euch was?
Hier übrigens ein kleiner Testbaum mit 3 Ebenen. Die Wurzel und die Ebene darunter sind von Anfang an geöffnet, die Ebene ohne "Kinder" jedoch nicht mehr.
Code:
public class TestBaum{
	public static void main(String[] args) {
		new TestBaum();
	}
	public TestBaum() {
		JFrame frame = new JFrame("BaumTest");
		JPanel pan = new JPanel(new GridLayout(1,1));
		DefaultMutableTreeNode wurzel = new DefaultMutableTreeNode("Baumwurzel");
		for (int i = 0; i < 5; i++) {
			DefaultMutableTreeNode ebene1 = new DefaultMutableTreeNode("Test " + (i+1));
			for (int j = 0; j < 3; j++) {
				DefaultMutableTreeNode ebene2 = new DefaultMutableTreeNode("EbeneZwei " + (j+1));
				ebene1.add(ebene2);
			}
			wurzel.add(ebene1);
		}
		DefaultTreeModel treeModel = new DefaultTreeModel(wurzel);
		JTree tree = new JTree(treeModel);
		tree.setEditable(false);
		tree.getSelectionModel().setSelectionMode(
				TreeSelectionModel.SINGLE_TREE_SELECTION);
		tree.setShowsRootHandles(false);
		pan.add(tree);
		frame.add(pan);
		frame.setSize(200,200);
		frame.setLocation(100,100);
		frame.setVisible(true);
	}
}
 
Howdie.

Schau dir mal die Methode expandPath(TreePath p) des JTree-Objekts an.
Mein erster Vorschlag wäre das Hinzufügen von Child-Nodes an einen Parent-Node in eine Methode zu packen und folgendermaßen vorzugehen:
Code:
public void addNewChildNodeToParent(TreeNode parent, TreeNode... childNodes){

   for(TreeNode child : childNodes){
        parent.add(child);
   }

   TreePath p = new TreePath(this.rootNode.getPath());
   this.myJTree.expandPath(p);
}
Ist aus dem Kopf geschrieben, daher keine Garantie auf 100% Richtigkeit.

Gruß
miffi
 
Hallo,

hier ist eine andere Möglichkeit, den kompletten Baum zu öffnen:

Java:
public void expandAll(JTree tree) {
    int row = 0;
    while (row < tree.getRowCount()) {
      tree.expandRow(row);
      row++;
  }
}

Grüße
Vincent
 
Zurück