设置新的树模型时如何自动扩展 JTree?
我有一个习俗和一个习俗;当我给JTree一个新模型时,我会让它“自动扩展”。目前,它只是将所有节点折叠到根目录。JTree
JModel
下面是一个示例:
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));
此时,树将正确显示:
- BOB
- ALICE
其中 Alice 是 Bob 的子项(在数据和可视化树中)
但是,如果我调用:
tree.setModel(new CustomTreeModel(model));
一切都崩溃了:
+ BOB
有没有办法在设置新模型时“自动扩展”树中的所有内容?