【问题标题】:JTree: Can someone figure out that whats wrong with this CodeJTree:有人能弄清楚这段代码有什么问题吗
【发布时间】:2011-10-20 19:38:55
【问题描述】:

我正在用 Net bean 开发一个小型桌面应用程序。我将JTree 拖放到我的JFrame 上,现在我想动态填充这个JTree 的节点层次结构。为此,我编写了一个返回我DefaultMutableTreeNode 对象的方法。现在我再次用这个对象创建树,但树仍然显示旧的(默认)节点:

DefaultMutableTreeNode root = createJTreeNodes();
jTree1 = new JTree(root);
jTree1.repaint();
jTree1.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION);

任何人都可以指导我需要更改什么,以便动态填充树吗?

【问题讨论】:

  • 为什么不能将模型设置为现有的 jTree1(使用 setModel)?你为什么要重建它?另外 iirc,您可以在 netbeans GUI 设计器中使用自定义代码作为“后构造”,您可以在其中初始化 jtree 模型。
  • @UsmanSaleem:我尝试了 setModel () 方法,但它采用 TreeModel 类型的对象,而我有 DefaultMutableTreeNode 的对象对不起,我是 java 新手,所以请指导正确的做法这个
  • 重复? stackoverflow.com/questions/7835962/… - 如果一个工具对你的阻碍大于它的帮助,放弃它。

标签: java swing netbeans jtree


【解决方案1】:

任何人都可以指导我需要更改什么,以便动态填充树吗?

几个不同的选项:

DefaultTreeModel model = (DefaultTreeModel)tree.getModel();
DefaultMutableTreeNode root = (DefaultMutableTreeNode)model.getRoot();
root.add(new DefaultMutableTreeNode("another_child"));
model.reload(root);

或

DefaultTreeModel model = (DefaultTreeModel) tree.getModel();
DefaultMutableTreeNode root = (DefaultMutableTreeNode) model.getRoot();
model.insertNodeInto(new DefaultMutableTreeNode("another_child"), root, root.getChildCount());

【讨论】:

    【解决方案2】:

    首先你需要删除JTree中所有netbeans默认添加的节点。

    DefaultTreeModel model=(DefaultTreeModel)jTree1.getModel();
    model.setRoot(null);
    

    现在创建新根并添加您想要的所有元素并使用上面的代码设置新根。

    【讨论】:

      猜你喜欢
      • 2011-08-15
      • 1970-01-01
      • 2018-05-16
      • 2015-04-05
      • 2013-11-21
      • 2012-03-15
      • 1970-01-01
      相关资源
      最近更新 更多