【发布时间】:2011-12-18 17:03:34
【问题描述】:
我想从 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;
}
}
所以,我的树有一些名为“curve”+一些 ID 的节点,我想用这个方法删除其中一个及其所有子节点,但如果我调用 ID=0 的方法,我希望它删除每个来自 JTree 的节点。
它不工作。它确实会删除节点,但是当我添加一个节点时,删除的节点也会与新节点一起出现。如果它是被擦除的同一个节点,它现在会出现两次。怎么了?
注意:每次添加或删除节点时,我都会调用 JTree 的更新方法来手动刷新它。在那里我调用显示的方法来擦除每个节点,所以我可以添加应该保留的那些。
【问题讨论】: