La siguientes dos rutinas permiten expandir o colapsar por completo un árbol JTree. Por desgracia, la única forma de hacerlo es recorriendo el árbol recursivamente y procediendo a expandir o colapsar los nodos en profundidad.
import javax.swing.JTree; import javax.swing.tree.TreePath; public class TreeState { public static void setTreeState(JTree tree, boolean expanded) { Object root = tree.getModel().getRoot(); setTreeState(tree, new TreePath(root),expanded); } public static void setTreeState(JTree tree, TreePath path, boolean expanded) { Object lastNode = path.getLastPathComponent(); for (int i = 0; i < tree.getModel().getChildCount(lastNode); i++) { Object child = tree.getModel().getChild(lastNode,i); TreePath pathToChild = path.pathByAddingChild(child); setTreeState(tree,pathToChild,expanded); } if (expanded) tree.expandPath(path); else tree.collapsePath(path); } }
|
TreeState.java ( 724 bytes ) |