Выберите все узлы флажка в jtree

У меня есть построение дерева узлов флажка на основе именованного вектора. И у меня есть кнопка, называемая выбрать все. Когда я нажимаю кнопку «Выбрать все», мне нужно, чтобы все узлы в дереве узлов флажка были выбраны.

Код, который я использовал,

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

Здесь checkBoxColumn — это список массивов, который содержит все узлы дерева как (Node, isSelected).

Но когда я это делаю, с деревом ничего не происходит.


person Achilles    schedule 02.02.2012    source источник


Ответы (1)


Я сделал это, приведя узел дерева к изменяемому узлу дерева по умолчанию и получив перечисление дочерних элементов. Затем вы можете перебрать их и установитьSelected(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.
 }

Кроме того, вы делаете это в потоке рассылки событий? Если нет, возможно, именно поэтому вы не видите никаких обновлений на экране.

person Dodd10x    schedule 02.02.2012