// Wenn "expand" true ist, werden alle Nodes im Baum expandiert
// andernfalls werden alle Nodes im Baum geschlossen
public void expandAll(final JTree tree, final boolean expand) {
// try {Thread.sleep(300);} catch(InterruptedException ex){}
TreeNode root = (TreeNode)tree.getModel().getRoot();
// Den Baum vom Root aus durchlaufen:
expandAll(tree, new TreePath(root), expand);
// expandAll(tree, new TreePath(((DefaultTreeModel)tree.getModel()).getPathToRoot(root)), expand);
tree.requestFocusInWindow();
}
private void expandAll(final JTree tree, final TreePath parent, final boolean expand) {
// Die Kinder durchlaufen:
TreeNode node = (TreeNode)parent.getLastPathComponent();
if (node.getChildCount() >= 0) {
for (Enumeration e=node.children(); e.hasMoreElements(); ) {
TreeNode n = (TreeNode)e.nextElement();
TreePath path = parent.pathByAddingChild(n);
expandAll(tree, path, expand);
}
}
// "expand" / "collapse" geschieht von unten nach oben
if (expand) {
tree.expandPath(parent);
} else {
tree.collapsePath(parent);
}
}