Can we prevent the collapse of nodes and child nodes in a JTree with Java?


Yes, we can prevent the collapse of nodes and child nodes in a JTree using setExpandedState() method. This method sets the expanded state of this JTree.If state istrue, all parents of path and path are marked asexpanded.

The following is an example that prevents the collapse of nodes and child nodes in a JTree with Java −

Example

package my;
import javax.swing.JFrame;
import javax.swing.JTree;
import javax.swing.text.Position;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.TreePath;
public class SwingDemo {
   public static void main(String[] args) throws Exception {
      JFrame frame = new JFrame("Demo");
      DefaultMutableTreeNode node = new DefaultMutableTreeNode("Project");
      DefaultMutableTreeNode node1 = new DefaultMutableTreeNode("App");
      DefaultMutableTreeNode node2 = new DefaultMutableTreeNode("Website");
      DefaultMutableTreeNode node3 = new DefaultMutableTreeNode("WebApp");
      node.add(node1);
      node.add(node2);
      node.add(node3);
      DefaultMutableTreeNode one = new DefaultMutableTreeNode("Learning website");
      DefaultMutableTreeNode two = new DefaultMutableTreeNode("Business website");
      DefaultMutableTreeNode three = new DefaultMutableTreeNode("News publishing website");
      DefaultMutableTreeNode four = new DefaultMutableTreeNode("Android app");
      DefaultMutableTreeNode five = new DefaultMutableTreeNode("iOS app");
      DefaultMutableTreeNode six = new DefaultMutableTreeNode("Editor WebApp");
      node1.add(one);
      node1.add(two);
      node1.add(three);
      node2.add(four);
      node2.add(five);
      node3.add(six);
      JTree tree = new JTree(node) {
         protected void setExpandedState(TreePath path, boolean state) {
            if (state) {
               super.setExpandedState(path, state);
            }
         }
      };
      for (int i = 0; i < tree.getRowCount(); i++) {
         tree.expandRow(i);
      }
      tree.putClientProperty("JTree.lineStyle", "Angled");
      int begnRow = 0;
      String prefix = "A";
      TreePath treePath = tree.getNextMatch(prefix, begnRow, Position.Bias.Forward);
      System.out.println("Node = "+treePath);
      tree.setRowHeight(25);
      frame.add(tree);
      frame.setSize(550,400);
      frame.setVisible(true);
   }
}

Output

Updated on: 30-Jul-2019

217 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements