当前位置: 移动技术网 > IT编程>开发语言>Java > Swing常用组件之单选按钮和复选框

Swing常用组件之单选按钮和复选框

2019年07月22日  | 移动技术网IT编程  | 我要评论

本文为大家分享了swing单选按钮和复选框的使用方法,供大家参考,具体内容如下

jradiobutton构造函数:

jradiobutton():建立一个新的jradiobutton.
jradiobutton(icon icon):建立一个有图像但没有文字的jradiobutton.
jradiobutton(icon icon,boolean selected):建立一个有图像但没有文字的jradiobutton,且设置其初始状态(有无被选取).
jradiobutton(string text):建立一个有文字的jradiobutton.
jradiobutton(string text,boolean selected):建立一个有文字的jradiobutton,且设置其初始状态(有无被选取)。
jradiobutton(string text,icon icon):建立一个有文字且有图像的jradiobutton,初始状态为无被选取。
jradiobutton(string text,icon icon,boolean selected):建立一个有文字且有图像的jradiobutton,且设置其初始状态(有无被选取)
要将radiobutton改成单选,我们必须用到buttongroup这个类。这个类位于javax.swing这个package下面,buttongroup类的主 要功能是:同一时间内只会有一个组件的状态为"on",其他皆为"off",也就是同一时间只有一个组件会被选取。而buttongroup类可 被abstractbutton下面的子类所使用,最常被使用的就是jradiobutton、jradiobuttonmenu、item与jtogglebutton这些组件

buttongroup类的构造方法如下:

buttongroup()创建一个新的buttongroup()

buttongroup()类的常用的方法如下:
public void add(abstractbutton b):添加按钮到组中
public void clearselection():清除选中内容,即没有选中按钮组中的任何按钮
pubic int getbuttoncount():获取此组中的按钮数
public enumeration<abstractbutton>getelemeent():获取此组中的所用按钮
public void remove (abstractbutton b):从按钮中删除按钮

jcheckbox构造函数

jcheckbox():建立一个新的jchcekbox.
jcheckbox(icon icon):建立一个有图像但没有文字的jcheckbox.
jcheckbox(icon icon,boolean selected):建立一个有图像但没有文字的jcheckbox,且设置其初始状态(有无被选取)。
jcheckbox(string text):建立一个有文字的jcheckbox.
jcheckbox(string text,boolean selected):建立一个有文字的jcheckbox,且设置其初始状态(有无被选取)。
jcheckbox(string text,icon icon):建立一个有文字且有图像的jcheckbox,初始状态为无被选取。
jcheckbox(string text,icon icon,boolean selected):建立一个有文字且有图像的jcheckbox,且设置其初始状态(有无被选取 )。
当jcheckbox中的选项被选取 或取消时,它会触发itemevent的事件,itemevent这个类共提供了4种方法可以使用,分别是getitem()、getitemselectable()、 getstatechange()、paramstring()。getitem()与paramstring()方法会返回一些这个jcheckbox的状态值。一般我们较少用到这两 个方法。

getitemselectable()相当于getsource()方法,一样都是返回触发事件的组件,用来判断是那个组件产生事件。getsource()方法是eventobject类所提供,而所有事件类都会继承这个类,因此所有的事件我们均能用getsource() 方法来判断到底是哪个组件触发了事件。

最后getstatechange()方法会返回此组件到底有没有被选取。这个方法会返回一个整数值。而我们可以用itemevent所提供的类 变量;若被选取则返回selected,若没有被选取则返回deselected.
单选按钮和复选框注册和注销itemevent事件监听器的方法如下:
public void additemlistener(itemlistener l): 注册指定的itemlistener事件监听器
public void removeitemlistener(itemlistener l): 注销指定的itemlistener事件监听器

package ch10; 
 
import java.awt.event.*; 
 
import javax.swing.*; 
 
public class vote extends jframe implements actionlistener 
{ 
   private jpanel jp = new jpanel(); 
   jradiobutton jrb1 = new jradiobutton("这个网站很好,很新颖!",true); 
   jradiobutton jrb2 = new jradiobutton("这个网站很普通,太一般"); 
   jradiobutton jrb3 = new jradiobutton("这个网站很差,偶尔看一下"); 
   jradiobutton jrb4 = new jradiobutton("这个网站太差了,不来了"); 
   private jradiobutton[] jrb = new jradiobutton[]{jrb1,jrb2,jrb3,jrb4}; 
   private buttongroup bg = new buttongroup(); 
   jcheckbox jcb1 = new jcheckbox("界面比较漂亮"); 
   jcheckbox jcb2 = new jcheckbox("内容比较丰富"); 
   jcheckbox jcb3 = new jcheckbox("增值服务比较好"); 
   jcheckbox jcb4 = new jcheckbox("会员服务比较好"); 
   private jcheckbox[] jcb =new jcheckbox[]{jcb1,jcb2,jcb3,jcb4}; 
   private jbutton [] jb = {new jbutton("我要投票"),new jbutton("我要重选")}; 
   private jlabel[] jl = {new jlabel("这个网站给你的印象是:"),new jlabel("您认为本站哪里做的比较好"),new jlabel("您投票的内容是:")}; 
   private jtextarea jt = new jtextarea(); 
   private jscrollpane js= new jscrollpane(jt); 
   public vote() 
   { 
     jp.setlayout(null); 
     for(int i=0;i<4;i++) 
     { 
       jrb[i].setbounds(30+170*i,40,170,30); 
       jcb[i].setbounds(30+120*i,100,120,30); 
       jp.add(jrb[i]); 
       jp.add(jcb[i]); 
       jcb[i].addactionlistener(this); 
       jrb[i].addactionlistener(this); 
       bg.add(jrb[i]); 
       if(i>1) 
         continue; 
       jl[i].setbounds(20,20+50*i,200,30); 
       jb[i].setbounds(380+120*i,200,100,20); 
       jp.add(jl[i]); 
       jp.add(jb[i]); 
       jb[i].addactionlistener(this); 
     } 
     jl[2].setbounds(20,150,120,30); 
     jp.add(jl[2]); 
     js.setbounds(120,150,500,50); 
     jp.add(js); 
     jt.setlinewrap(true); 
     jt.seteditable(false); 
     this.add(jp); 
     this.settitle("网站满意调查表"); 
     this.setbounds(150,150,750,300); 
     this.setvisible(true); 
     this.setdefaultcloseoperation(jframe.exit_on_close); 
   } 
   public void actionperformed(actionevent a) 
   { 
     if(a.getsource()==jb[1]) 
     { 
       bg.clearselection(); 
       for(int i=0;i<jcb.length;i++) 
         jcb[i].setselected(false); 
       jt.settext(""); 
     } 
     else 
     { 
       stringbuffer temp1 = new stringbuffer("你认为这个网站"); 
       stringbuffer temp2 = new stringbuffer(""); 
       for(int i=0;i<4;i++) 
       { 
         if(jrb[i].isselected()) 
           temp1.append(jrb[i].gettext()); 
         if(jcb[i].isselected()) 
           temp2.append(jcb[i].gettext()+","); 
       } 
       if(temp2.length()==0) 
         jt.settext("请将两项调查都选择"); 
       else 
       { 
         temp1.append("你认为这个网站"); 
         temp1.append(temp2.substring(0,temp2.length()-1)); 
         jt.settext(temp1.tostring()); 
       } 
     } 
   } 
   public static void main(string args[]) 
   { 
     new vote(); 
   } 
}

效果图:


以上就是本文的全部内容,希望对大家的学习有所帮助。

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网