유지하고 싶은 루트 노드를 제외하고 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라는 일부 노드를 가지고 있으며, 나는 그들 중 하나를이 방법으로 모든 아이를 지우려하지만 경우 I : 나는 재귀 방법으로 시도하고있다 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. BTW, 이제 해결되었습니다. – Luismahou