Как перебрать ButtonGroup в Swing?

У меня есть группа RadioButton в JPanel. Я хочу, чтобы они имели зеленый фон, когда они не выбраны, и красный фон, когда они выбраны. По самой природе JRadioButtons только один должен быть красным одновременно.

Моя проблема в том, что настройка фона в 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);
            }

        });
    }
}

person sdasdadas    schedule 11.06.2013    source источник
comment
Дубликат: stackoverflow.com/questions/201287/, приносим свои извинения.   -  person sdasdadas    schedule 11.06.2013
comment
Что заставляет вас говорить, что getElements() не то, что вам нужно?   -  person femtoRgon    schedule 11.06.2013
comment
@femtoRgon Я не уверен - я думаю, может быть, я неправильно использовал его как Iterable. Спасибо за внимание!   -  person sdasdadas    schedule 11.06.2013
comment
@sdasdadas getElements возвращает Enumeration элементов в ButtonGroup. Я бы сказал, что это именно то, что вы хотите.   -  person Guillaume Polet    schedule 11.06.2013
comment
@sdasdadas посмотрите на Select Button Group Дэррила Берка   -  person mKorbel    schedule 11.06.2013