我在一个名为TreeFrame的JFrame的子类的构造函数中有这段代码。我想在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);除了根节点,这不会显示任何内容?我只将最后一条指令tree = new JTree(treeModel);移到了周期块之前。
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线程中有关?
发布于 2014-08-29 08:15:39
这两种方法都很好地构建了模型,所有数据都在那里,问题是在第二个示例中,默认情况下根节点是折叠的。
在构建完模型之后,尝试添加tree.expandPath(new TreePath(r));。
https://stackoverflow.com/questions/25558826
复制相似问题