用ButtonGroup和JRadioButton配合即可。
import java.awt.BorderLayout;
import javax.swing.ButtonGroup;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
public class RadioTest extends JFrame {
public static void main(String[] args) {
new RadioTest();
}
public RadioTest() {
this.setSize(800, 600);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
JRadioButton button = new JRadioButton("apple");
JRadioButton button2 = new JRadioButton("banana");
ButtonGroup group = new ButtonGroup();
group.add(button);
group.add(button2);
JPanel panel = new JPanel();
panel.add(button);
panel.add(button2);
this.add(panel, BorderLayout.NORTH);
this.setVisible(true);
}
}
/**
* 设置一个单选框
* @param jpx X坐标
* @param jpy Y坐标
* @param jpw 宽
* @param jph 高
* @param names 单选框的值,动态参数,第一个参数默认选中
* @return
*/
public JPanel setJradioButton(int jpx, int jpy, int jpw, int jph, String... names){
JPanel JRadiojPane = new JPanel();
JRadiojPane.setBounds(jpx, jpy, jpw, jph);
ButtonGroup gchu = new ButtonGroup();
for (String str : names){
JRadioButton jb = new JRadioButton(str, true);
gchu.add(jb);
JRadiojPane.add(jb);
}
return JRadiojPane;
}
/**
* 获取JPanel中单选框的值,JRadiojPane必须定义为final
* @param JRadiojPane
* @return
*/
public String getJrdioButtonText(JPanel JRadiojPane) {
String name = null;
int count = JRadiojPane.getComponentCount();
for (int i = 0; i < count; i++) {
Component comp = JRadiojPane.getComponent(i);
if (comp instanceof JRadioButton) {
JRadioButton btn = (JRadioButton) comp;
if (btn.isSelected()) {
name = btn.getText();
return name;
}
}
}
return name;
}
用法:
//创建一个单选器
final JPanel JRadiojPane = setJradioButton(X, Y, W, H,"单选1","单选2",,"单选3");
//将单选器加到面板中
jPanel.add(JRadiojPane);
//获取单选框的值
String dbName = getJrdioButtonText(JRadiojPane);