我有一个自定义JTree
和一个自定义JModel
;当我给它一个新的模型时,我会让JTree“自动扩展”。目前,它只是将所有节点折叠到根目录。如何在设置新的TreeModel时自动扩展JTree?
下面是一个例子:
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
爱丽丝是Bob的孩子(无论是在数据和在视觉树)
但是,如果我叫:
tree.setModel(new CustomTreeModel(model));
一切都崩溃了:
+ BOB
有没有办法设置一个新的模型时,“自动扩展”树一切?
没有从这个代码和说明思路,模式改变之后,所有通告和听众走开, – mKorbel 2013-03-04 21:39:10
@mKorbel我相信我的回答如下解决了我问题。 – sdasdadas 2013-03-04 21:43:12
:-) ...............不要使用int的索引,你可能会丢失这个索引,必须存储关于节点inc的所有可访问信息。对象值(我的视图) – mKorbel 2013-03-04 21:47:07