Проблемы с программным выбором узлов флажка - PullRequest
0 голосов
/ 03 февраля 2012

У меня есть группа флажков. Перечислена в древовидной структуре. Дерево связано с вектором, который хранит состояние флажков в дереве.У меня есть кнопки, чтобы выбрать все флажки, и другие кнопки, чтобы установить соответствующий флажок.На приведенной ниже диаграмме вы можете изобразить пользовательский интерфейс.

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

.заключается в том, что при нажатии соответствующих кнопок состояние флажка изменяется, но после нажатия кнопки «Выбрать все» я вижу, что узлы проверяются, но после этого, если я пытаюсь выбрать отдельные узлы с помощью соответствующей кнопки, я не могуувидеть результат на дереве.Может ли кто-нибудь помочь мне с вашими предложениями.Заранее спасибо ответчику.

Ответы [ 2 ]

2 голосов
/ 03 февраля 2012

Похоже на проблему с уведомлением - вы изменяете состояние узла без ведома модели.Предполагая, что ваша модель DefaultTreeModel, вызовите model.nodeChanged после изменения выбора:

currentNode.setSelected(newState);
model.nodeChanged(currentNode);
0 голосов
/ 03 февраля 2012

Где код для ваших кнопок используется для выбора отдельных узлов?Вы пытаетесь сделать кнопку, которая переключается, но ваша сейчас только ставит флажок?Может быть, попробуйте это:

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