您的代码格式为:
for (String color : colors.keySet()) {
JRadioButton button = new JRadioButton(color);
ButtonGroup group = new ButtonGroup();
group.add(button);
button.setOpaque(false);
buttonPanel.add(button);
button.addActionListener(listener);
}
您将在循环的每次迭代中创建一个新的 ButtonGroup,因此每个单选按钮都分配给它自己的按钮组。这不是 ButtonGroups 的工作方式,因为它们要求将所有分组的切换按钮(例如 JRadioButtons)添加到单个 ButtonGroup。
解决方案是只创建一个ButtonGroup,在 for 循环之前执行此操作,然后将每个 JRadioButton 添加到循环内的该组中。例如:
// do this *before* the for-loop
ButtonGroup group = new ButtonGroup();
for (String color : colors.keySet()) {
JRadioButton button = new JRadioButton(color);
// ButtonGroup group = new ButtonGroup(); // not *inside* the for loop
group.add(button); // then use it here
button.setOpaque(false);
buttonPanel.add(button);
button.addActionListener(listener);
}