单选框的实现类是JRadioButton类;
在使用时要引入:
import javax.swing.JRadioButton;
单选框和复选框类似, 都是从JToggleButton 类派生出来的。但不同之处在于,单选框的选框组中,只能有一个处于选中状态。
这里加入一个ButtonGroup类,单选框按钮一般处于一个按钮组中,独自的一个单选框是没有意义的。
在使用单选框时,也要引入:
import javax.swing.ButtonGroup;
在同一个 ButtonGroup 按钮组中的单选按钮,只能有一个单选按钮被选中。因此,如果创建的多个单选按钮其初始状态都是选中状态,则最先加入ButtonGroup 按钮组的单选按钮的选中状态被保留,其后加入到 ButtonGroup 按钮组中的其他单选按钮的选中状态被取消。
JRadioButton类的构造方法如下,它有3个参数(可根据需要设置参数,不一定三个都填)
JRadioButton(String text,Icon icon,boolean selected):创建一个具有指定的文本、图像和选择状态的单选按钮。
现在来创建几个单选框:
//创建4个单选框按钮
JRadioButton c1 = new JRadioButton("面筋哥",true);//只传了两个参数
JRadioButton c2 = new JRadioButton("凤姐");
JRadioButton c3 = new JRadioButton("芙蓉姐姐");
JRadioButton c4 = new JRadioButton("电瓶哥");
创建一个按钮组,并将c1,c2,c3,c4加入进去
ButtonGroup group = new ButtonGroup(); //创建一个按钮组
group.add(c1); //将c1,c2,c3,c4加入到group里
group.add(c2);
group.add(c3);
group.add(c4);
现在四个按钮就是 group 组的了。
需要注意的是,group并不能加入到面板或者窗口中去,只能将单选框按钮一个一个的加到面板或窗口中去。
现在来创建顶层容器,面板(中间容器),并将c1,c2,c3,c4加入到面板。
JFrame j1 = new JFrame("Box"); //顶层容器j1
j1.setSize(200, 200); //设置窗口大小
JPanel j2 = new JPanel(); //面板(中间容器)
JLabel l1 = new JLabel("你更喜欢哪个人:"); //这是另外创建的一个标签,也加入到面板里吧。
j2.add(l1); //标签l1加到面板j2
j2.add(c1); //将c1,c2,c3,c4加入到面板(中间容器)
j2.add(c2);
j2.add(c3);
j2.add(c4);
最后将面板j2加入到窗口j1,运行程序看看。
j1.add(j2); //面板j2加入到窗口j1
j1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //这两个前面提到过便不再赘述
j1.setVisible(true);
运行结果:
下面是完整的可运行的源代码
import javax.swing.JFrame; //顶层容器 (框架)
import javax.swing.JPanel; //中间容器
import javax.swing.JLabel; //标签
import javax.swing.JRadioButton; //单选框实现类
import javax.swing.ButtonGroup; //按钮组类
public class text_JRadioButton
{
public static void main(String[] args)
{
JFrame j1 = new JFrame("Box"); //顶层容器
j1.setSize(200, 200); //窗口大小
JPanel j2 = new JPanel(); //中间容器
JRadioButton c1 = new JRadioButton("面筋哥",true);
JRadioButton c2 = new JRadioButton("凤姐");
JRadioButton c3 = new JRadioButton("芙蓉姐姐");
JRadioButton c4 = new JRadioButton("电瓶哥");
ButtonGroup group = new ButtonGroup();
group.add(c1);
group.add(c2);
group.add(c3);
group.add(c4);
JLabel l1 = new JLabel("你更喜欢哪个人:");
j2.add(l1);
j2.add(c1);
j2.add(c2);
j2.add(c3);
j2.add(c4);
j1.add(j2);
j1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
j1.setVisible(true);
}
}