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

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

最佳答案

您的代码格式:

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,因此每个单选按钮都会分配给其自己的按钮组。这不是 ButtonGroup 的工作方式,因为它们要求将所有分组的切换按钮(例如 JRadioButton)添加到单个 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);
}

关于java - 使用集合 .txt 文件中的 Map TreeSet 对单选按钮进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18282980/

相关文章:

Java - 使用 ArrayList 可以有不止一种数据类型吗?

java - Java Swing程序运行时显示不一致

java - 客户端关闭后,Android TCP 服务器仅显示来自 Python 客户端的消息

Java GUI 游戏菜单

java - 使用 lambda 表达式反转字符串中的单词

java - 内部 JFrame 属性

java - 如何在 Swing 中显示每个菜单项的 JPanel?

javascript - 单击后防止检查的单选按钮

Java:如何更改 JRadioButton 的字体大小?

css - :focus effect not showing up on bootstrap radio button group