繁体   English   中英

Swing JCheckbox上的多选问题

[英]Multi selection problem on Swing JCheckbox

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

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

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

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

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

问题是您正在使用 ButtonGroup,它将放置在其中的对象视为单选按钮(一次只能 select 一个)。

而是尝试将它们添加到 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;
}

类似的东西。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM