Java Swing - How to Collapse or Expand All Nodes of JTree? [Updated: Mar 16, 2018, Created: Mar 5, 2018] |
|
||
This example shows how to expand or collapse all nodes of a JTree programmatically. ExampleExpand/Collapse JTree nodespackage com.logicbig.example; import javax.swing.*; import javax.swing.tree.DefaultMutableTreeNode; import javax.swing.tree.TreePath; import java.util.ArrayList; import java.util.Collections; public class JTreeUtil { public static void setTreeExpandedState(JTree tree, boolean expanded) { DefaultMutableTreeNode node = (DefaultMutableTreeNode) tree.getModel().getRoot(); setNodeExpandedState(tree, node, expanded); } public static void setNodeExpandedState(JTree tree, DefaultMutableTreeNode node, boolean expanded) { ArrayList<DefaultMutableTreeNode> list = Collections.list(node.children()); for (DefaultMutableTreeNode treeNode : list) { setNodeExpandedState(tree, treeNode, expanded); } if (!expanded && node.isRoot()) { return; } TreePath path = new TreePath(node.getPath()); if (expanded) { tree.expandPath(path); } else { tree.collapsePath(path); } } } Creating JTreepublic class TreeExampleMain { public static void main(String[] args) { Hashtable<?, ?> projectHierarchyMap = TradingProjectDataService.instance.getProjectHierarchy(); JTree tree = new JTree(projectHierarchyMap); JFrame frame = createFrame(); frame.add(new JScrollPane(tree)); frame.add(createTopPanel(tree), BorderLayout.NORTH); frame.setLocationRelativeTo(null); frame.setVisible(true); } private static JComponent createTopPanel(JTree tree) { JPanel panel = new JPanel(); JButton expandBtn = new JButton("Expand All"); expandBtn.addActionListener(ae-> { JTreeUtil.setTreeExpandedState(tree, true); }); panel.add(expandBtn); JButton collapseBtn = new JButton("Collapse All"); collapseBtn.addActionListener(ae-> {JTreeUtil.setTreeExpandedState(tree, false);}); panel.add(collapseBtn); return panel; } private static JFrame createFrame() { JFrame frame = new JFrame("JTree Expand/Collapse example"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setSize(new Dimension(500, 400)); return frame; } } Output![]() On clicking 'Expand All' button: ![]() Example ProjectDependencies and Technologies Used:
|
|
||
|
|||
|
|||
|