我喜欢为此使用 ButtonGroup 本身。IE,
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import javax.swing.*;
public class ButtonModelEg {
public static final String[] BUTTON_TEXTS = {"Fe", "Fi", "Fo", "Fum"};
private static void createAndShowUI() {
final ButtonGroup btnGroup = new ButtonGroup();
JPanel panel = new JPanel(new GridLayout(0, 1));
for (String btnText : BUTTON_TEXTS) {
JRadioButton radioBtn = new JRadioButton(btnText);
radioBtn.setActionCommand(btnText);
btnGroup.add(radioBtn);
panel.add(radioBtn);
}
final JTextField selectionField = new JTextField();
JButton button = new JButton(new AbstractAction("Get Choice"){
public void actionPerformed(ActionEvent arg0) {
// get the button model selected from the button group
ButtonModel selectedModel = btnGroup.getSelection();
if (selectedModel != null) {
// and dislay it
selectionField.setText(selectedModel.getActionCommand());
}
}
});
panel.add(button);
panel.add(selectionField);
JFrame frame = new JFrame("ButtonModelEg");
frame.getContentPane().add(panel);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
public static void main(String[] args) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
createAndShowUI();
}
});
}
}