本文实例讲述了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