【问题标题】:Letting User add Nodes to a JTree, nodes do not appear if parent has EVER been expanded让用户将节点添加到 JTree,如果父级已展开,则不会出现节点
【发布时间】:2011-03-06 10:52:51
【问题描述】:

我在 JTree 中插入节点时遇到问题。基本上,用户右键单击父节点,会弹出一个可能要插入的子节点的列表。他们选择一个它作为所选节点的子节点插入。当父节点从未展开时,这一切都很好。但是,如果用户尝试插入的节点的父节点已经展开,则 UI 似乎不会相应更新。

以下是相关的代码行: 创建 JTree:this.tree = new JTree(ctlr.getRulesTableTreeModel().getModel()); getModel() 方法返回一个 DefaultTreeModel 模型原始树层次结构。

插入节点:this.treeModel.insertNodeInto(child, parent, index);

很抱歉没有提供更多代码,但是这个项目大概有 3000 行,我正在尝试挑选相关的行。

【问题讨论】:

    标签: java user-interface swing tree


    【解决方案1】:

    您需要更新模型:

    根据默认树模型 api:

    http://java.sun.com/javase/6/docs/api/javax/swing/tree/DefaultTreeModel.html

    添加节点后,您需要 告诉模型添加了节点;这将告诉 ui 正确刷新。

    例如:

    nodesWereInserted(TreeNode node, int[] childIndices)
              Invoke this method after you've inserted some TreeNodes into node.p
    

    【讨论】:

      猜你喜欢
      • 2014-04-13
      • 2012-09-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-05
      • 2011-01-29
      相关资源
      最近更新 更多