Java JTree collapse tree path
import java.awt.Container; import java.awt.FlowLayout; import java.util.ArrayList; import java.util.Collections; import java.util.Enumeration; import java.util.List; import javax.swing.JFrame; import javax.swing.JScrollPane; import javax.swing.JTree; import javax.swing.tree.DefaultMutableTreeNode; import javax.swing.tree.TreeNode; import javax.swing.tree.TreePath; public class Main { public static void main(String args[]) { final JFrame f = new JFrame("JTree Demo"); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); Container c = f.getContentPane(); c.setLayout(new FlowLayout()); DefaultMutableTreeNode root = new DefaultMutableTreeNode("Computer"); DefaultMutableTreeNode c1 = new DefaultMutableTreeNode("A"); DefaultMutableTreeNode c2 = new DefaultMutableTreeNode("B"); DefaultMutableTreeNode c3 = new DefaultMutableTreeNode("C"); root.add(c1);/*from w ww.java2s . co m*/ root.add(c2); root.add(c3); c1.add(new DefaultMutableTreeNode("1")); c1.add(new DefaultMutableTreeNode("2")); c2.add(new DefaultMutableTreeNode("3")); c2.add(new DefaultMutableTreeNode("4")); c3.add(new DefaultMutableTreeNode("5")); DefaultMutableTreeNode n6 = new DefaultMutableTreeNode("6"); c3.add(n6); JTree t = new JTree(root); TreePath path = getPath(n6); collapsePath(t, path); c.add(new JScrollPane(t)); f.pack(); f.setVisible(true); } public static TreePath getPath(TreeNode node) { List list = new ArrayList(); // Add all nodes to list while (node != null) { list.add(node); node = node.getParent(); } Collections.reverse(list); // Convert array of nodes to TreePath return new TreePath(list.toArray()); } public static void collapsePath(JTree tree, TreePath parent) { 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); collapsePath(tree, path); } } tree.collapsePath(parent); } }