2012-02-02 5 views
3

名前付きベクタベースのチェックボックスノードツリービルドがあります。 そしてselect allというボタンがあります。 「すべてを選択」ボタンをクリックすると、Chekboxノードツリー上のすべてのノードを選択する必要があります。jtree内のすべてのチェックボックスノードを選択

私が使用しているコードは、ここ

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

checkBoxColumnは(ノード、isSelected)としてツリーのすべてのノードが含まのArrayListです。

これを行うと、ツリーに何も起こりません。

答えて

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. 
} 

また、イベントディスパッチスレッドでこれを実行していますか?もしそうでなければ、あなたは画面に何も更新されていないのかもしれません。

+0

パーフェクト!とった ! – Achilles

関連する問題