java选择框、单选框和单选按钮
选择框、单选框和单选按钮都是选择组件,选择组件有两种状态,一种是选中(on),另一种是未选中(off),它们提供一种简单的 “on/off”选择功能,让用户在一组选择项目中作选择。
选择框
选择框(jcheckbox)的选中与否开状是一个小方框,被选中则在框中打勾。当在一个容器中有多个选择框,同时可以有多个选择框被选中,这样的选择框也称复选框。与选择框相关的接口是itemlistener,事件类是itemevent。
jcheckbox类常用的构造方法有以下3个:
1.jcheckbox():用空标题构造选择框。
2.jcheckbox(string s):用给定的标题s构造选择框。
3.jcheckbox(string s, boolean b):用给定的标题s构造选择框,参数b设置选中与否的初始状态。
jcheckbox类的其他常用方法如下:
1.getstate():获取选择框的状态。
2.setstate(boolean b):设置选择框的状态
3.getlabel():获取选择框的标题。
4.setlabel(string s):设置选择框的标题。
5.isselected():获取选择框是否被选中的状态。
6.itemstatechanged(itemevent e):处理选择框事件的接口方法。
7.getitemselectable():获取可选项,获取事件源。
8.additemlistener(itemlistener l):为选择框设定监视器。
9.removeitemlistener(itemlistener l):移去选择框的监视器。
【例 11-11】声明一个面板子类,面板子类对象有3个选择框。
class panel1 extends jpanel{
jcheckbox box1,box2,box3;
panel1(){
box1 = new jcheckbox(“足球”);
box2 = new jcheckbox(“排球”);
box2 = new jcheckbox(“篮球”);
}
}
单选框
当在一个容器中放入多个选择框,且没有buttongroup对象将它们分组,则可以同时选中多个选择框。如果使用buttongroup对象将选择框分组,同一时刻组内的多个选择框只允许有一个被选中,称同一组内的选择框为单选框。单选框分组的方法是先创建buttongroup对象,然后将希望为同组的选择框添加到同一个buttongroup对象中。参见例6.2程序的面板子类panel2的声明,组内有3个单选框。
单选按钮
单选按钮(jradiobutton)的功能与单选框相似。使用单选按钮的方法是将一些单选按钮用buttongroup对象分组,使同一组的单选按钮只允许有一个被选中。单选按钮与单选框的差异是显示的样式不同,单选按钮是一个圆形的按钮,单选框是一个小方框。
jradiobutton类的常用构造方法有以下几个:
1.jradiobutton():用空标题构造单选按钮。
2.jradiobutton(string s):用给定的标题s构造单选按钮。
3.jradiobutton(string s,boolean b):用给定的标题s构造单选按钮,参数b设置选中与否的初始状态。
单选按钮使用时需要使用buttongroup将单选按钮分组,单选按钮的分组方法是先创建对象,然后将同组的单选按钮添加到同一个buttongroup对象中。参见例6.2程序的子类panel1的声明,组内有3个单选按钮。
选择项目事件处理
用户对选择框或单选按钮做出选择后,程序应对这个选择作出必要的响应,程序为此要处理选择项目事件。选择项目处理程序的基本内容有:
1.监视选择项目对象的类要实现接口itemlistener,
2.程序要声明和建立选择对象,
3.为选择对象注册监视器,
4.编写处理选择项目事件的接口方法itemstatechanged(itemevent e),在该方法内用getitemselectable()方法获取事件源,并作相应处理。
【例 11-12】处理选择项目事件的小应用程序。一个由3个单选按钮组成的产品选择组,当选中某个产品时,文本区将显示该产品的信息。一个由3个选择框组成的购买产品数量选择框组,当选择了购买数量后,在另一个文本框显示每台价格。
import java.applet.*; import javax.swing.*; import java.awt.*; import java.awt.event.*; class panel1 extends jpanel{ jradiobutton box1,box2,box3; buttongroup g; panel1(){ setlayout(new gridlayout(1,3)); g = new buttongroup(); box1 = new jradiobutton(mywindow.fname[0]+"计算机",false); box2 = new jradiobutton(mywindow.fname[1]+"计算机",false); box3 = new jradiobutton(mywindow.fname[2]+"计算机",false); g.add(box1);g.add(box2);g.add(box3); add(box1);add(box2);add(box3); add(new jlabel("计算机3选1") ); } } class panel2 extends jpanel{ jcheckbox box1,box2,box3; buttongroup g; panel2(){ setlayout(new gridlayout(1,3)); g = new buttongroup(); box1 = new jcheckbox("购买1台 "); box2 = new jcheckbox("购买2台 "); box3 = new jcheckbox("购买3台 "); g.add(box1);g.add(box2);g.add(box3); add(box1);add(box2);add(box3); add(new jlabel(" 选择1、2或3")); } } class mywindow extends jframe implements itemlistener{ panel1 panel1; panel2 panel2; jlabel label1,label2; jtextarea text1,text2; static string fname[] = {"hp","ibm","dell"}; static double pritbl[][]={{1.20,1.15,1.10},{1.70,1.65,1.60},{1.65,1.60,1.58}}; static int productin = -1; mywindow(string s){ super(s); container con = this.getcontentpane(); con.setlayout(new gridlayout(3,2)); this.setlocation(100,100); this.setsize(400,100); panel1 = new panel1();panel2 = new panel2(); label1 = new jlabel("产品介绍",jlabel.center); label2 = new jlabel("产品价格",jlabel.center); text1 = new jtextarea();text2 = new jtextarea(); con.add(label1);con.add(label2);con.add(panel1); con.add(panel2);con.add(text1);con.add(text2); panel1.box1.additemlistener(this); panel1.box2.additemlistener(this); panel1.box3.additemlistener(this); panel2.box1.additemlistener(this); panel2.box2.additemlistener(this); panel2.box3.additemlistener(this); this.setvisible(true);this.pack(); } public void itemstatechanged(itemevent e){ //选项状态已改变 if(e.getitemselectable()==panel1.box1){ //获取可选项 production =0; text1.settext(fname[0]+"公司生产");text2.settext(""); } else if(e.getitemselectable()==panel1.box2){ production =1; text1.settext(fname[1]+"公司生产");text2.settext(""); } else if(e.getitemselectable()==panel1.box3){ production =2; text1.settext(fname[2]+"公司生产");text2.settext(""); } else{ if(production ==-1) return; if(e.getitemselectable()==panel2.box1){ text2.settext(""+pritbl[production][0]+"万元/台"); } else if(e.getitemselectable()==panel2.box2){ text2.settext(""+pritbl[production][1]+"万元/台"); } else if(e.getitemselectable()==panel2.box3){ text2.settext(""+pritbl[production][2]+"万元/台"); } } } } public class example6_2 extends applet{ mywindow mywin = new mywindow("选择项目处理示例程序"); }
以上所述就是本文的全部内容了,希望大家能够喜欢。
上一篇: php微信公众号开发模式详解
推荐阅读
-
java选择框、单选框和单选按钮
-
java选择框、单选框和单选按钮
-
JS获取下拉框显示值和判断单选按钮的方法_javascript技巧
-
Vue表单绑定的实例代码(单选按钮,选择框(单选时,多选时,用 v-for 渲染的动态选项)
-
Axure RP 8怎么利用按钮控制单选框和复选框?
-
Vue表单绑定的实例代码(单选按钮,选择框(单选时,多选时,用 v-for 渲染的动态选项)
-
BootStrap表单控件之复选框checkbox和单选择按钮radio
-
Axure RP 8怎么利用按钮控制单选框和复选框?
-
Jquery和CSS实现选择框重置按钮功能
-
Axure RP 8怎么设计单选按钮和按钮选择值?