I have a custom JTree and a custom JModel; I would for the JTree to "auto-expand" when I give it a new model. At the moment, it simply collapse all the nodes to the root.
Here is an example:
private class CustomTree extends JTree {      @Override     public boolean isExpanded(TreePath path) {         return ((Person) path.getLastPathComponent).hasChildren();  }  private class CustomTreeModel extends TreeModel {      // ... omitting various implementation details      @Override     public boolean isLeaf(Object object) {         return !((Person) object).hasChildren();     }  }  Model model = new Model(); Person bob = new Person(); Person alice = new Person(); bob.addChild(alice); model.setRoot(bob); JTree tree = new CustomTree(new CustomTreeModel(model)); At this point, the tree correctly displays:
- BOB   - ALICE where Alice is a child of Bob (both in the data and in the visual tree)
However, if I call:
tree.setModel(new CustomTreeModel(model)); everything is collapsed:
+ BOB Is there a way to "auto-expand" everything in the tree when setting a new model?
2) row numbers of tree nodes are not static. When we pass a row number to "expandRow(row)" method, suppose n, the tree will expand nth visible node from the root.
JTree is a Swing component with which we can display hierarchical data. JTree is quite a complex component. A JTree has a 'root node' which is the top-most parent for all nodes in the tree. A node is an item in a tree. A node can have many children nodes.
The following worked for me (called after setting the new model):
for (int i = 0; i < tree.getRowCount(); i++) {     tree.expandRow(i); } If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With