Java 如何在Swing中迭代ButtonGroup?

Java 如何在Swing中迭代ButtonGroup?,java,swing,jradiobutton,buttongroup,Java,Swing,Jradiobutton,Buttongroup,我在JPanel中有一组单选按钮。我希望它们在未选中时有一个绿色背景,在选中时有一个红色背景。根据JRadioButtons的本质,一次只能有一个按钮为红色 我的问题是在ActionListener中设置背景不起作用,因为它不会更新其余的按钮 有什么方法可以迭代按钮组的元素吗?(方法getElements似乎不是我需要的。) 以下是SsCcE: import java.awt.Color; import java.awt.Dimension; import java.awt.event.Acti

我在
JPanel
中有一组
单选按钮。我希望它们在未选中时有一个绿色背景,在选中时有一个红色背景。根据
JRadioButton
s的本质,一次只能有一个按钮为红色

我的问题是在
ActionListener
中设置背景不起作用,因为它不会更新其余的按钮

有什么方法可以迭代
按钮组的元素吗?(方法
getElements
似乎不是我需要的。)

以下是SsCcE:

import java.awt.Color;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.ButtonGroup;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.SwingUtilities;

public class Test {

    public static void main(String[] args) {

        SwingUtilities.invokeLater(new Runnable() {

            @Override
            public void run() {
                JFrame frame = new JFrame();
                frame.setPreferredSize(new Dimension(1024, 768));
                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

                JPanel content = new JPanel();

                // This is the important stuff. :)

                ButtonGroup group = new ButtonGroup();
                for (int i = 0; i < 5; i++) {
                    final JRadioButton btn = new JRadioButton(String.valueOf(i));
                    group.add(btn);
                    content.add(btn);
                    btn.setBackground(Color.green);
                    btn.addActionListener(new ActionListener() {

                        @Override
                        public void actionPerformed(ActionEvent event) {
                            if (btn.isSelected()) {
                                btn.setBackground(Color.red);
                            } else {
                                btn.setBackground(Color.green);
                            }
                        }
                    });
                }

                // The important stuff is over. :(

                frame.setContentPane(content);
                frame.pack();
                frame.setLocationRelativeTo(null);
                frame.setVisible(true);
            }

        });
    }
}
导入java.awt.Color;
导入java.awt.Dimension;
导入java.awt.event.ActionEvent;
导入java.awt.event.ActionListener;
导入javax.swing.ButtonGroup;
导入javax.swing.JFrame;
导入javax.swing.JPanel;
导入javax.swing.JRadioButton;
导入javax.swing.SwingUtilities;
公开课考试{
公共静态void main(字符串[]args){
SwingUtilities.invokeLater(新的Runnable(){
@凌驾
公开募捐{
JFrame=新JFrame();
frame.setPreferredSize(新维度(1024768));
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel content=新的JPanel();
//这是重要的东西。:)
ButtonGroup=新建ButtonGroup();
对于(int i=0;i<5;i++){
最终JRadioButton btn=新的JRadioButton(String.valueOf(i));
添加组(btn);
添加内容(btn);
背景(颜色为绿色);
btn.addActionListener(新ActionListener(){
@凌驾
已执行的公共无效操作(操作事件){
如果(btn.isSelected()){
背景(颜色为红色);
}否则{
背景(颜色为绿色);
}
}
});
}
//重要的事情结束了(
frame.setContentPane(内容);
frame.pack();
frame.setLocationRelativeTo(空);
frame.setVisible(true);
}
});
}
}

replicate:,抱歉。你为什么说
getElements()
不是你需要的呢?@femtoRgon我不确定-我想可能是我把它误用成了
Iterable
。谢谢你的提醒@sdadas
getElements
返回
按钮组中元素的
枚举。我想说这正是你想要的。@sdadas