Java Swing组件单选框JRadioButton用法示例
程序员文章站
2023-12-19 12:07:34
本文实例讲述了java swing组件单选框jradiobutton用法。分享给大家供大家参考,具体如下:
jradiobutton是swing中的单选框。所谓单选框是指...
本文实例讲述了java swing组件单选框jradiobutton用法。分享给大家供大家参考,具体如下:
jradiobutton是swing中的单选框。所谓单选框是指,在同一个组内虽然有多个单选框存在,然而同一时刻只能有一个单选框处于选中状态。它就像收音机的按钮,按下一个时此前被按下的会自动弹起,故因此得名。因此,在添加jradiobutton控件时,要记得将它们添加到同一个buttongroup中。
jradiobutton的常用方法如下图所示:
可以为它添加actionlistener对象来响应事件。这里有一个问题,当多个jradiobutton共用一个事件监听器时,如何获取产生事件的按钮?
有4种方法:
1.遍历这些按钮并检查是否选中,这种方法比较笨重。
2.使用事件的getactioncommand()
方法,这需要事先为每个控件设置actioncommand。
3.使用事件的getsource,并转化为控件对象。
4.使用buttongroup的getselection方法,它返回的并不是控件,而是那个控件的buttonmodel,需再次调用buttonmodel的getactioncommand方法。
使用demo如下:
jradiobuttondemo.java
package awtdemo; import java.awt.borderlayout; import java.awt.font; import java.awt.event.actionevent; import java.awt.event.actionlistener; import java.util.hashmap; import java.util.map; import javax.swing.buttongroup; import javax.swing.jframe; import javax.swing.jlabel; import javax.swing.jpanel; import javax.swing.jradiobutton; /* * source code from 《java核心技术 卷1 基础知识》 p329 */ @suppresswarnings("serial") public class jradiobuttondemo extends jframe { int default_width = 600; int default_height = 400; private jlabel label; private jpanel buttonpanel; private buttongroup group; private static final int default_size = 12; private map actioncommandsizemap = new hashmap(); // 二维数组存储按钮属性,第一维是按钮名称,第二维是字体大小 private string[][] buttonattributes = { { "small", "medium", "large", "extra" }, { "8", "12", "18", "36" } }; public jradiobuttondemo() { settitle("jradiobuttondemo - www.jb51.net"); setsize(default_width, default_height); // 添加label label = new jlabel("欢迎访问 www.jb51.net"); label.setfont(new font("serif", font.plain, default_size)); add(label, borderlayout.center); // 添加buttonpanel,它包含4个radiobutton buttonpanel = new jpanel(); group = new buttongroup(); add(buttonpanel, borderlayout.south); // 添加radiobutton for (int i = 0; i < buttonattributes[0].length; i++) { addradiobutton(buttonattributes[0][i], integer.parseint(buttonattributes[1][i])); // 将按钮名称和字体大小添加为对应表,名称等同于actioncommand actioncommandsizemap.put(buttonattributes[0][i], integer.parseint(buttonattributes[1][i])); } } public void addradiobutton(string name, final int size) { boolean selected = size == default_size; jradiobutton button = new jradiobutton(name, selected); button.setactioncommand(name);// 设置name即为actioncommand group.add(button); buttonpanel.add(button); // 构造一个监听器,响应checkbox事件 actionlistener actionlistener = new actionlistener() { public void actionperformed(actionevent e) { // 1.通过eactioncommand string eactioncommand = e.getactioncommand(); system.out.printf("e.getactioncommand() is %s\n", eactioncommand); // 2.通过getsource() object sourceobject = e.getsource(); if (sourceobject instanceof jradiobutton) { jradiobutton sourcebutton = (jradiobutton) sourceobject; system.out.printf("selected jradiobutton is %s\n", sourcebutton.gettext()); } // 3.通过groupselectionactioncommand string groupselectionactioncommand = group.getselection() .getactioncommand(); system.out.printf("groupselectionactioncommand is %s\n", groupselectionactioncommand); label.setfont(new font("serif", font.plain, actioncommandsizemap.get(groupselectionactioncommand))); } }; button.addactionlistener(actionlistener); } public static void main(string[] args) { // todo auto-generated method stub // 创建窗体并指定标题 jradiobuttondemo frame = new jradiobuttondemo(); // 关闭窗体后退出程序 frame.setdefaultcloseoperation(jframe.exit_on_close); // 自动适配所有控件大小 // frame.pack(); // 设置窗体位置在屏幕* frame.setlocationrelativeto(null); // 显示窗体 frame.setvisible(true); } }
运行效果如下:
更多关于java相关内容感兴趣的读者可查看本站专题:《java数据结构与算法教程》、《java字符与字符串操作技巧总结》、《java操作dom节点技巧总结》、《java文件与目录操作技巧汇总》和《java缓存操作技巧汇总》
希望本文所述对大家java程序设计有所帮助。