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
。谢谢你的提醒@sdadasgetElements
返回按钮组中元素的枚举。我想说这正是你想要的。@sdadas