Я хочу удалить каждый узел из 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;
}
}
Итак, в моем дереве есть несколько узлов, называемых «кривая» + некоторый идентификатор, и я хочу стереть один из них и все его дочерние элементы с помощью этого метода, но если я вызову метод с идентификатором = 0, я хочу, чтобы он удалил каждый узел из JTree.
Это не работает. Он стирает узлы, но когда я добавляю узел, стертые также появляются вместе с новым. Если это тот же узел, который был стерт, теперь он появляется дважды. Что случилось?
ПРИМЕЧАНИЕ. Каждый раз, когда я добавляю или удаляю узел, я вызываю метод обновления для JTree, чтобы обновить его вручную. Именно там я вызываю показанные методы, чтобы стереть каждый узел, поэтому я могу добавить те, которые должны остаться.