У меня есть группа RadioButton
в JPanel
. Я хочу, чтобы они имели зеленый фон, когда они не выбраны, и красный фон, когда они выбраны. По самой природе JRadioButton
s только один должен быть красным одновременно.
Моя проблема в том, что настройка фона в 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);
}
});
}
}
getElements()
не то, что вам нужно? - person femtoRgon   schedule 11.06.2013Iterable
. Спасибо за внимание! - person sdasdadas   schedule 11.06.2013getElements
возвращаетEnumeration
элементов вButtonGroup
. Я бы сказал, что это именно то, что вы хотите. - person Guillaume Polet   schedule 11.06.2013