本文实例讲述了java swing组件下拉菜单控件jcombobox用法。分享给大家供大家参考,具体如下:
jcombobox是swing中的下拉菜单控件。它永远只能选中一个项目,然而比单选按钮节省空间。如果使用seteditable设置为true则内部选项的文本可以编辑,因此这种组件被称为组合框。注意,对选项的编辑只会影响当前项,而不会改变列表内容。可以使用additem方法来添加选项列表,或者使用insertitemat在任何位置插入选项;然而如果有大量选项需要添加,这种方法是非常笨重的,可以先构造一个defaultcomboboxmodel,使用addelement加载选项,最后在调用jcombobox的setmodel方法。
常用方法如下:
示例代码:
jcomboboxbasicusedemo.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
93
94
95
96
97
98
99
100
101
102
103
|
package awtdemo;
import java.awt.borderlayout;
import java.awt.font;
import java.awt.event.actionevent;
import java.awt.event.actionlistener;
import java.awt.event.itemevent;
import java.awt.event.itemlistener;
import javax.swing.jcombobox;
import javax.swing.jframe;
import javax.swing.jlabel;
import javax.swing.event.popupmenuevent;
import javax.swing.event.popupmenulistener;
/*
* 演示jcombobox的基本用法,以及事件响应
*/
public class jcomboboxbasicusedemo extends jframe{
private static final long serialversionuid = -8161981948004677531l;
int default_width = 600 ;
int default_height = 400 ;
private jlabel label;
private jcombobox<string> facecombo;
private static final int fontsize = 12 ;
@suppresswarnings ( "unused" )
public jcomboboxbasicusedemo(){
settitle( "jcomboboxdemo - www.zzvips.com" );
setsize(default_width, default_height);
//添加label
label = new jlabel( "欢迎来到服务器之家 www.zzvips.com" );
label.setfont( new font( "serif" ,font.plain, fontsize));
add(label, borderlayout.center);
//actionlistener
actionlistener actionlistener = new actionlistener(){
public void actionperformed(actionevent e) {
if (e.getsource() instanceof jcombobox){
@suppresswarnings ({ "unchecked" , "rawtypes" })
jcombobox<string> combobox = (jcombobox)e.getsource();
string fontname = combobox.getselecteditem().tostring();
label.setfont( new font(fontname, font.plain, fontsize));
system.out.printf( "%s%n" , "actionperformed called" );
}
}
};
//popupmenulistener
popupmenulistener popupmenulistener = new popupmenulistener() {
@override
public void popupmenucanceled(popupmenuevent e) {
system.out.println( "下拉菜单取消" );
}
@suppresswarnings ( "unchecked" )
@override
public void popupmenuwillbecomeinvisible(popupmenuevent e) {
system.out.println( "下拉菜单合上" );
jcombobox<string> source = (jcombobox<string>)e.getsource();
}
@override
public void popupmenuwillbecomevisible(popupmenuevent e) {
system.out.println( "下拉菜单弹出" );
}
};
//itemlistener
itemlistener itemlistener = new itemlistener() {
@override
public void itemstatechanged(itemevent arg0) {
// todo auto-generated method stub
if (itemevent.selected == arg0.getstatechange()){
string selecteditem = arg0.getitem().tostring();
label.setfont( new font(selecteditem, font.plain, fontsize));
system.out.printf( "new selected item : %s%n" ,selecteditem);
}
if (itemevent.deselected == arg0.getstatechange()){
string selecteditem = arg0.getitem().tostring();
system.out.printf( "deselected item : %s%n" ,selecteditem);
}
}
};
//添加一个jcombobox
facecombo = new jcombobox<string>();
facecombo.seteditable( true );
//facecombo.addactionlistener(actionlistener);
//facecombo.addpopupmenulistener(popupmenulistener);
facecombo.additemlistener(itemlistener);
facecombo.setenabled( true );
facecombo.additem( "serif" );
facecombo.additem( "sansserif" );
facecombo.additem( "monospaced" );
facecombo.additem( "dialog" );
facecombo.additem( "dialoginput" );
add(facecombo, borderlayout.south);
}
public static void main(string[] args) {
// todo auto-generated method stub
//创建窗体并指定标题
jcomboboxbasicusedemo frame = new jcomboboxbasicusedemo();
//关闭窗体后退出程序
frame.setdefaultcloseoperation(jframe.exit_on_close);
//自动适配所有控件大小
//frame.pack();
//设置窗体位置在屏幕*
frame.setlocationrelativeto( null );
//显示窗体
frame.setvisible( true );
}
}
|
本程序的基本功能是,通过选择不同的item而相应地改变界面中的英文字体(如本例中的www.zzvips.com)。运行效果如下:
下面分析jcombobox的事件响应。程序中使用了3个不同的事件响应函数,他们具有不同的特性。
actionlistener:它在eclipse和netbeans两个不同的ide中表现出了不同的效果- -。在eclipse中,每当选中新节点时被激活;而在netbeans中,选择新节点时它总会被激活两次。
popupmenulistener:它将选择节点的过程细分为3种类型:下拉菜单弹出;下拉菜单合上;下拉菜单取消。当点开下拉菜单,然后放弃选择时,则下拉菜单取消、下拉菜单合上两个事件先后被激活。
itemlistener:将节点的事件分为2种类型:selected和deselected。对于每种事件,均可以调用getitem()方法来获取相应节点。
因此,如果业务逻辑只关心最新被选中的节点,那么使用itemlistener是比较合适的。希望本文所述对大家java程序设计有所帮助。
原文链接:http://www.cnblogs.com/pzy4447/p/4641463.html