Swing JCheckbox上的多选问题

时间:2011-06-07 15:13:23

标签: java swing checkbox selection

我有一个复选框列表,但我无法从此列表中进行多项选择,它会在我选中一个新框时禁用之前的选择。我该如何更改我的代码?或者如果看起来不错,偶然的话我在代码中的其他地方做错了。

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 个答案:

答案 0 :(得分:4)

这是ButtonGroup的工作方式,您可以选择组中的任何按钮,但一次只能选择1。通常也使用JRadioButton。

如果您希望能够选择多个复选框,请不要使用ButtonGroup。

答案 1 :(得分:2)

你可能需要JRadioButtons吗?使用ButtonGroup并添加组中的所有单选按钮。之后,如果您选择之前选择的任何一个,则会丢失所选状态。

答案 2 :(得分:2)

问题在于您正在使用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;
}

类似的东西。