2012-02-03 42 views
0

我列出在树上structure.The树复选框组与载体,其存储在所述树的复选框的状态相连接。我有按钮来选择所有复选框和其他按钮来选择相应的复选框。从下面的图表中可以看到UI。与编程方式选择复选框问题节点

enter image description here

for (CheckBoxNode Node : CheckBoxNodeTree.checkBoxRows) { 
if(Node.isSelected()){ 
Node.setSelected(!Node.isSelected()); 
     } 

对于选择中使用的所有代码:

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); 
     } 

我现在面临的问题是,在点击相应的按钮,复选框状态变化,但点击后“选择所有“按钮,我可以看到节点被检查,但在此之后,如果我尝试使用相应的按钮选择induvidual节点,我无法在树上看到结果。 任何人都可以帮助我的建议。感谢提前回复。

+0

这是一个错字吗?您正在使用不同的枚举。而(enumeratorForTree.hasMoreElements()){ 树节点子= enumeratorForColumnTree.nextElement(); – Dodd10x 2012-02-03 05:12:13

+0

我不太清楚你的问题。清除复选框时什么都没有提到?某处你必须将它们设置为假?检查一个已经被选中的框是没有作用的? – Gus 2012-02-03 05:12:58

+0

为了更快地获得更好的帮助,请发布[SSCCE](http://sscce.org/)。 – 2012-02-03 05:35:06

回答

0

在使用你的按钮代码选择单独的节点?你是否想要制作一个可切换的按钮,但是你现在只能选中该框?也许试试这个:

buttonPushed() { 
    //get your node for this button 
    node.setSelected(!node.isSelected()); 
} 
+0

Actualy,做完select后,我可以看到节点被检查。但是做完这些之后,如果我们按下其他任何按钮,我都无法在对应的节点中看到相应的更改。一天 – 2012-02-03 05:27:41

2

看起来像一个通知问题 - 你正在改变节点状态,没有模型知道它。假设你的模型是一个DefaultTreeModel,在改变选区后调用model.nodeChanged:

currentNode.setSelected(newState); 
model.nodeChanged(currentNode); 
+0

学习项目,我会确保XxxEditor通知DefaultXxxModel +1 – mKorbel 2012-02-03 11:43:31

+0

@mKorbel - 编辑器做(其实它是树的CellEditorListener somehwere在UI委托),但这里的问题(我的理解它)是关于_programmatically_改变节点状态 – kleopatra 2012-02-03 11:46:21

+0

同意问题,但我一定会确定,直到现在Enumeration更改了Node中的每个JComponents以及我没有的所有代码,有趣的是,谢谢 – mKorbel 2012-02-03 11:52:16