本文实例讲述了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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
|
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.zzvips.com" );
setsize(default_width, default_height);
// 添加label
label = new jlabel( "欢迎访问服务器之家 www.zzvips.com" );
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程序设计有所帮助。
原文链接:http://www.cnblogs.com/pzy4447/p/4641101.html