Задача множественного выбора на Swing JCheckbox - PullRequest
2 голосов
/ 07 июня 2011

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

public JPanel createMultiMenu(ArrayList<String> domainItems) {

    checkBoxMenuPanel = new JPanel();
    checkBoxMenuPanel.setLayout(new GridBagLayout());
    GridBagConstraints gbc = new GridBagConstraints();
    gbc.gridx = 0;
    gbc.gridy = GridBagConstraints.RELATIVE;
    gbc.anchor = GridBagConstraints.WEST;

    ButtonGroup group = new ButtonGroup();
    for (String item : domainItems) {
        JCheckBox checkBox = new JCheckBox(item);
        group.add(checkBox);
        checkBoxMenuPanel.add(checkBox,gbc);        
    }
    return checkBoxMenuPanel;
}

Ответы [ 3 ]

4 голосов
/ 07 июня 2011

Так работает ButtonGroup, вы можете выбрать любую кнопку в группе, но одновременно можно выбрать только 1. Также обычно для этого используется JRadioButton.

Если вы хотите иметь возможность установить несколько флажков, не используйте ButtonGroup.

2 голосов
/ 07 июня 2011

Проблема в том, что вы используете ButtonGroup, которая обрабатывает объекты, помещенные в нее, как радиокнопки (вы можете выбрать только один за раз).

Вместо этого попробуйте просто добавить их в JPanel.

public JPanel createMultiMenu(ArrayList<String> domainItems) {

    checkBoxMenuPanel = new JPanel();
    checkBoxMenuPanel.setLayout(new GridBagLayout());
    GridBagConstraints gbc = new GridBagConstraints();
    gbc.gridx = 0;
    gbc.gridy = GridBagConstraints.RELATIVE;
    gbc.anchor = GridBagConstraints.WEST;


    for (String item : domainItems) {
        JCheckBox checkBox = new JCheckBox(item);
        checkBoxMenuPanel.add(checkBox, gbc);        
    }
    return checkBoxMenuPanel;
}

Нечто подобное.

2 голосов
/ 07 июня 2011

Может быть, вам нужны JRadioButtons?Используйте ButtonGroup и добавьте все радиокнопки в группу.После этого, если вы выберете любой из них, ранее выбранный, теряет выбранное состояние.

...