2

我很难弄清楚为什么我的单选按钮不会分组。下面是我的代码。

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

1 回答 1

2

您的代码格式为:

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);
}
于 2013-08-16T22:25:37.513 回答