相关疑难解决方法(0)

在设置新的TreeModel时如何自动扩展JTree?

我有自定义JTree和习惯JModel; 当我给它一个新的模型时,我会让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));
Run Code Online (Sandbox Code Playgroud)

此时,树正确显示:

- BOB
  - ALICE
Run Code Online (Sandbox Code Playgroud)

Alice是Bob的孩子(在数据和可视化树中)

但是,如果我打电话:

tree.setModel(new CustomTreeModel(model));
Run Code Online (Sandbox Code Playgroud)

一切都崩溃了:

+ …
Run Code Online (Sandbox Code Playgroud)

java tree swing jtree

18
推荐指数
3
解决办法
2万
查看次数

标签 统计

java ×1

jtree ×1

swing ×1

tree ×1