2012-02-02 115 views
3

我有一個基於命名向量的複選框節點樹構建。 而我有一個名爲全選的按鈕。 當我點擊全選按鈕時,我需要選擇chekbox節點樹上的所有節點。選擇jtree中的所有複選框節點

我已經使用的代碼是

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

這裏checkBoxColumn是包含樹(節點,isSelected)的所有節點數組列表一個。

但是,當我這樣做,沒有任何事情發生在樹上。

回答

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

另外,你是否在事件dispath線程上執行此操作?如果不是這樣,那可能是爲什麼你沒有看到屏幕的任何更新。

+0

完美!得到它了 ! – Achilles 2012-02-02 06:09:24