java 允许用户将节点添加到JTree,如果父节点已展开,则节点不会出现

y4ekin9u  于 2023-08-01  发布在  Java
关注(0)|答案(2)|浏览(94)

我在JTree中插入节点时遇到问题。基本上,用户右键单击父节点,弹出一个可能要插入的子节点的列表。它们选择一个节点,该节点将作为选定节点的子节点插入。当父节点从未展开时,这一切都很好。但是,如果用户试图插入的节点的父节点曾经被展开过,则UI似乎不会相应地更新。
下面是相关的代码行:创建JTree:this.tree = new JTree(ctlr.getRulesTableTreeModel().getModel()); getModel()方法返回一个DefaultTreeModel,它对原始树层次结构进行建模。
插入节点:this.treeModel.insertNodeInto(child, parent, index);
对不起,没有提供更多的代码,但这个项目是像3000行长,我试图挑选出相关的行。

7eumitmz

7eumitmz1#

您需要更新模型。
根据默认的树模型API:
http://java.sun.com/javase/6/docs/api/javax/swing/tree/DefaultTreeModel.html
在你添加了一个节点之后,你需要告诉模型这个节点已经被添加了;这将告诉UI正确地刷新。
举例来说:

nodesWereInserted(TreeNode node, int[] childIndices)

字符串
在node.p中插入一些TreeNodes后调用此方法

zzzyeukh

zzzyeukh2#

在修改了某个节点(将子节点添加到 yourNode)之后,可以调用:

((DefaultTreeModel)yourTree.getModel()).nodeStructureChanged((DefaultMutableTreeNode) yourNode);

字符串
我在这里找到了这个信息:https://coderanch.com/t/340158/java/Jtree-won-refresh-child-nodes

相关问题