使用集合.txt文件中的Map TreeSet对单选按钮进行分组

时间:2013-08-16 22:20:28

标签: java swing radio-button radio-group

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

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

1 个答案:

答案 0 :(得分: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,在循环之前执行,然后将每个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);
}