2
我想從JTree中刪除每個節點,除了我想保留的根節點。我想用遞歸方法:如何從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的方法我希望它從JTree中刪除每個節點。
它不工作。它會清除節點,但是當我添加一個節點時,刪除的節點也會與新節點一起出現。如果它是同一個節點,它將被刪除,現在它會出現兩次。怎麼了?
注意:每次添加或擦除節點時,我都會調用JTree的更新方法來手動刷新它。在那裏我打電話給所示的方法來擦除每個節點,所以我可以添加應該保留的那些。
是的,沒有:我希望能夠通過它的ID刪除某個節點,但我也想抹去整個JTree,這是我不知道該怎麼做。在根的removeAllChildren()會使它成爲? –
-1,沒有這樣的事情treeModel.nodeStructuredChanged(),你不能傳入一個空參數。 – Gili
[該方法存在](http://docs.oracle.com/javase/1.4.2/docs/api/javax/swing/tree/DefaultTreeModel.html#nodeStructureChanged(javax.swing.tree.TreeNode))。我的錯誤是不通過** nodeToRemove **作爲方法的參數。當您在瀏覽器中直接編碼Java時,會發生這種情況:P。順便說一下,它現在已經修復了。 – Luismahou