gpt4 book ai didi

java - 为什么 JTree 仅在创建 JTree 之前填充关联的 DefaultTreeModel 时才显示数据?

转载 作者:行者123 更新时间:2023-12-01 22:44:34 29 4
gpt4 key购买 nike

我在名为 TreeFrameJFrame 子类的构造函数中包含此代码。我想在 JTree 中显示 3 个级别,每个级别 10 个项目。为什么这会按预期工作:

private DefaultTreeModel treeModel;
private DefaultMutableTreeNode r;
private JTree tree;
...
r = new DefaultMutableTreeNode("ROOT");
treeModel = new DefaultTreeModel(r);

for (int i = 0; i < 10; i++) {
String a = "Object " + i;
DefaultMutableTreeNode aNode = new DefaultMutableTreeNode(a);
treeModel.insertNodeInto(aNode, r, r.getChildCount());
for (int j = 0; j < 10; j++) {
String b1 = "Sub-Object " + j;
DefaultMutableTreeNode bNode = new DefaultMutableTreeNode(b1);
treeModel.insertNodeInto(bNode, aNode, aNode.getChildCount());
for (int k = 0; k < 10; k++) {
String c = "Sub-Sub-Object " + k;
treeModel.insertNodeInto(new DefaultMutableTreeNode(c),
bNode, bNode.getChildCount());
}
}
}

tree = new JTree(treeModel);

除了 ROOT 节点之外,这没有显示任何内容?我只将最后一条指令 tree = new JTree(treeModel); 移到循环 block 之前。

private DefaultTreeModel treeModel;
private DefaultMutableTreeNode r;
private JTree tree;
...
r = new DefaultMutableTreeNode("ROOT");
treeModel = new DefaultTreeModel(r);
tree = new JTree(treeModel);

for (int i = 0; i < 10; i++) {
String a = "Object " + i;
DefaultMutableTreeNode aNode = new DefaultMutableTreeNode(a);
treeModel.insertNodeInto(aNode, r, r.getChildCount());
for (int j = 0; j < 10; j++) {
String b1 = "Sub-Object " + j;
DefaultMutableTreeNode bNode = new DefaultMutableTreeNode(b1);
treeModel.insertNodeInto(bNode, aNode, aNode.getChildCount());
for (int k = 0; k < 10; k++) {
String c = "Sub-Sub-Object " + k;
treeModel.insertNodeInto(new DefaultMutableTreeNode(c),
bNode, bNode.getChildCount());
}
}
}

也许这与没有将 new TreeFrame() 放入 EDT 线程有关?

最佳答案

两种方法都可以很好地构建模型,并且所有数据都在那里,问题出在第二个示例中,默认情况下根节点是折叠的。

完成模型构建后,尝试添加tree.expandPath(new TreePath(r));

关于java - 为什么 JTree 仅在创建 JTree 之前填充关联的 DefaultTreeModel 时才显示数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25558826/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com