我在 a 中有一组RadioButton
s JPanel
。我希望它们在未选中时具有绿色背景,在选中时具有红色背景。根据 s 的本质JRadioButton
,一次只能有一个是红色的。
我的问题是在 an 中设置背景ActionListener
不起作用,因为它不会更新其余按钮。
有什么方法可以迭代 的元素ButtonGroup
吗?(该方法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);
}
});
}
}