【发布时间】:2012-02-03 19:26:19
【问题描述】:
我有一个以树结构列出的复选框组。该树与一个向量相连,该向量存储树中复选框的状态。我有按钮来选择所有复选框,还有其他按钮来选择相应的复选框。从下图中您可以描绘出 UI。
for (CheckBoxNode Node : CheckBoxNodeTree.checkBoxRows) {
if(Node.isSelected()){
Node.setSelected(!Node.isSelected());
}
对于 Select All 使用的代码是:
TreeModel model = TREE.getModel();
TreeNode rootofTree = (TreeNode) model.getRoot();
Enumeration<TreeNode> enumeratorForTree = ((DefaultMutableTreeNode)rootofTree).breadthFirstEnumeration();
while (enumeratorForTree.hasMoreElements()) {
TreeNode child = enumeratorForTree.nextElement();
Object currentNode = ((DefaultMutableTreeNode) child).getUserObject();
if(currentNode instanceof CheckBoxNode) {
((CheckBoxNode) currentNode).setSelected(true);
}
}
for (CheckBoxNode Node: CheckBoxNodeTree.checkBoxRows)
{
Node.setSelected(true);
}
我现在面临的问题是,在单击相应按钮时,复选框状态会发生变化,但在单击“全选”按钮后,我可以看到节点被选中,但在此之后,如果我尝试选择使用相应按钮的单个节点,我在树上看不到结果。 任何人都可以帮助我提出您的建议。提前感谢回复者。
【问题讨论】:
-
是错字吗?您正在使用不同的枚举。 while (enumeratorForTree.hasMoreElements()) { TreeNode child = enumeratorForColumnTree.nextElement();
-
我不太清楚你的问题。清除复选框时没有提及?您必须在某个地方将它们设置回false?选中已选中的框是无效的吗?
-
如需尽快获得更好的帮助,请发帖SSCCE。
-
请学习java命名约定并遵守它们