gpt4 book ai didi

java - 如何从 JTree 中删除所有节点

转载 作者:行者123 更新时间:2023-12-04 06:09:20 26 4
gpt4 key购买 nike

我想从 JTree 中删除每个节点,除了要保留的根节点。我正在尝试使用递归方法:

public void removeMeasurement (Long ID){
removeMeasurement(root, ID);
collapseAll();
expandAll();
}

public void removeMeasurement (MutableTreeNode nodo, Long ID){
if (nodo.getChildCount() >= 0) {
for (Enumeration e=nodo.children(); e.hasMoreElements(); ) {
MutableTreeNode n = (MutableTreeNode)e.nextElement();
removeMeasurement(n, ID);
}
}
if(ID==0){
nodo.removeFromParent();
Register.debug("Eliminando ["+nodo.toString()+"]");
return;
}
else if(nodo.toString().toLowerCase().equals("curve "+ID)){
nodo.removeFromParent();
return;
}
}

所以,我的树有一些名为“曲线”+一些 ID 的节点,我想用这个方法删除其中一个节点和它的所有子节点,但是如果我调用 ID=0 的方法,我希望它从J树。

它不工作。它确实删除了节点,但是当我添加一个节点时,删除的节点也会与新节点一起出现。如果它是被删除的同一个节点,它现在会出现两次。怎么了?

注意:每次添加或删除节点时,我都会调用 JTree 的更新方法,以手动刷新它。在那里我调用显示的方法来删除每个节点,因此我可以添加应该保留的那些。

最佳答案

根据我的理解,您要做的是删除ID等于给定ID的节点,对吗?然后,我建议您创建一个方法,给定一个 ID,找到节点,然后创建另一个方法来删除找到的节点。像这样(我假设您使用的是 DefaultTreeModelDefaultMutableTreeNodes ):

DefaultMutableTreeNode findById(TreeModel treeModel, Long id) {
if (id == 0) {
return (DefaultMutableTreeNode) treeModel.getRoot();
}
String curveId = "curve " + id;
// The enumeration returns all the nodes, so it's not necessary to do a recursive search
Enumeration en = ((DefaultMutableTreeNode) treeModel.getRoot()).breadthFirstEnumeration();
while (en.hasMoreElements()) {
DefaultMutableTreeNode node = (DefaultMutableTreeNode) en.nextElement();
if (curveId.equalsIgnoreCase(node.toString()) {
return node;
}
}
}
void removeById(DefaultTreeModel treeModel, Long id) {
DefaultMutableTreeNode nodeToRemove = findById(treeModel, id);
if (nodeToRemove != null) {
if (nodeToRemove.isRoot()) {
nodeToRemove.removeAllChildren();
treeModel.nodeStructuredChanged(nodeToRemove); // To notify the JTree to update from the root
}
else {
treeModel.removeNodeFromParent(nodeToRemove); // Automatically notify the JTree
}
}
}

关于java - 如何从 JTree 中删除所有节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7953609/

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