2012-02-03 3 views
0

私はツリー構造でリストされたチェックボックスグループを持っています。ツリーはツリーにチェックボックスの状態を格納するベクトルに接続されています。私はすべてのチェックボックスを選択するためのボタン、および対応するチェックボックスを選択するための他のボタンを持っています。下の図から、あなたは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); 
     } 

私が今直面しています問題は、各ボタン、チェックボックスの状態の変更をクリックすると上のが、クリックした後、「選択していることですすべての "ボタンをクリックすると、ノードがチェックされているのがわかりますが、その後、対応するボタンを使用してノードを選択しようとすると、ツリー上に結果が表示されません。 誰でもあなたの提案を助けてくれますか?事前に回答者に感謝します。

+0

これは誤植ですか?異なる列挙を使用しています。 while(enumeratorForTree.hasMoreElements()){ TreeNode child = enumeratorForColumnTree.nextElement(); – Dodd10x

+0

私はあなたの質問にはっきりしていません。チェックボックスをオフにしても何も言及しませんか?あなたはどこかにそれらをfalseに戻さなければならないのですか?既にチェックされているボックスをチェックすることはノーオペレーションですか? – Gus

+0

すぐに役立つように、[SSCCE](http://sscce.org/)を投稿してください。 –

答えて

0

個々のノードを選択するためのボタンのコードはどこにありますか?トグルするボタンを作ろうとしていますが、あなたのボックスだけをチェックしていますか?多分これを試してみてください。

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

実際には、すべてを選択した後、私はノードがチェックされているのを見ることができます。しかし、これを行った後、他のボタンのどれかを押すと、対応するノードの対応する変更を見ることができません。 –

2

は、通知の問題のように見える - あなたはそれを知っモデルずにノードの状態を変更しています。あなたのモデルがDefaultTreeModelであると仮定して、選択を変更した後にmodel.nodeChangedを呼び出します。

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

今日の学習項目XxxEditorがDefaultXxxModel +1 – mKorbel

+0

を通知したことを確認したいと思います。@mKorbel - エディタは(実際にはuiデリゲート内のツリーのCellEditorListener somehwereですが)ここで質問は(私が理解したように)_programmatically_ノードの状態を変更する – kleopatra

+0

質問に同意しましたが、この瞬間まで、Enumerationはノード内のすべてのJComponentsを変更しました。 – mKorbel

関連する問題