我有一个复选框列表,但我无法从此列表中进行多项选择,它会在我选中一个新框时禁用之前的选择。我该如何更改我的代码?或者如果看起来不错,偶然的话我在代码中的其他地方做错了。
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;
}
答案 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;
}
类似的东西。