选择jtree中的所有复选框节点

时间:2012-02-02 04:45:00

标签: java swing checkbox jtree

我有一个基于命名向量的复选框节点树构建。 我有一个名为全选的按钮。 当我单击全选按钮时,我需要选择chekbox节点树上的所有节点。

我使用的代码是

 for (CheckBoxNode rowNode: CheckBoxNodeTree. checkBoxCoulmn) 
{
   if(rowNode instanceof CheckBoxNode)
   rowNode.setSelected((true));
}

这里checkBoxColumn是一个arraylist,它包含树的所有节点(Node,isSelected)。

但是当我这样做时,树上没有任何事情发生。

1 个答案:

答案 0 :(得分:3)

我是通过将树节点强制转换为默认的可变树节点并获取子节点的枚举来完成的。然后你可以迭代它们和setSelected(true)。如果用户反复点击,您的方式可能会遇到线程或并发修改的问题。

Enumeration<TreeNode> children = ((DefaultMutableTreeNode) node).breadthFirstEnumeration();
 while (children.hasMoreElements()) {
     TreeNode child = children.nextElement();
     Object currentNode = ((DefaultMutableTreeNode) child).getUserObject();
     //cast your currentNode to the check box and set selected or unselected.
 }

另外,您是否在事件调度线程上执行此操作?如果不是这样可能就是为什么你没有看到屏幕的任何更新。