我有一个JTree,
projectView
:
projectView = new JTree(projectViewTop);
projectView.setBackground(Color.WHITE);
projectView.setSize(250, getHeight());
projectView.setLocation(0, 0);
projectView.setVisible(true);
projectView.addKeyListener(this);
add(projectView);
哪里
projectViewTop
是主节点(
DefaultMutableTreeNode
)JTree的:
DefaultMutableTreeNode projectViewTop = new DefaultMutableTreeNode("Project");
这个
项目视图顶部
有几个子节点,也包含子节点(projectViewTop是“Project[My Project]”节点):
在某一点上,我需要清除每个孩子的
项目视图顶部
节点。我创建了这个方法来递归地清除它们:
public void clearNode(DefaultMutableTreeNode node) {
for (int i = 0; i < node.getChildCount(); i++) {
DefaultMutableTreeNode child = (DefaultMutableTreeNode) node.getChildAt(i);
clearNode(child);
}
node.removeAllChildren();
}
但是,当我运行此方法时,内容不会被可视化地清除。这就是JTree显示的情况:
另一方面,如果我折叠主节点,它会正确地清除所有内容(似乎只有当我折叠主结点时,视觉才会更新)。
清除主节点时,如何防止“脏”子节点停留在主节点上?