本文實(shí)例講述了java swing組件下拉菜單控件jcombobox用法。分享給大家供大家參考,具體如下:
jcombobox是swing中的下拉菜單控件。它永遠(yuǎn)只能選中一個(gè)項(xiàng)目,然而比單選按鈕節(jié)省空間。如果使用seteditable設(shè)置為true則內(nèi)部選項(xiàng)的文本可以編輯,因此這種組件被稱為組合框。注意,對選項(xiàng)的編輯只會影響當(dāng)前項(xiàng),而不會改變列表內(nèi)容。可以使用additem方法來添加選項(xiàng)列表,或者使用insertitemat在任何位置插入選項(xiàng);然而如果有大量選項(xiàng)需要添加,這種方法是非常笨重的,可以先構(gòu)造一個(gè)defaultcomboboxmodel,使用addelement加載選項(xiàng),最后在調(diào)用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的基本用法,以及事件響應(yīng) */ 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.ythuaji.com.cn" ); setsize(default_width, default_height); //添加label label = new jlabel( "歡迎來到服務(wù)器之家 www.ythuaji.com.cn" ); 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); } } }; //添加一個(gè)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 //創(chuàng)建窗體并指定標(biāo)題 jcomboboxbasicusedemo frame = new jcomboboxbasicusedemo(); //關(guān)閉窗體后退出程序 frame.setdefaultcloseoperation(jframe.exit_on_close); //自動適配所有控件大小 //frame.pack(); //設(shè)置窗體位置在屏幕中央 frame.setlocationrelativeto( null ); //顯示窗體 frame.setvisible( true ); } } |
本程序的基本功能是,通過選擇不同的item而相應(yīng)地改變界面中的英文字體(如本例中的www.ythuaji.com.cn)。運(yùn)行效果如下:
下面分析jcombobox的事件響應(yīng)。程序中使用了3個(gè)不同的事件響應(yīng)函數(shù),他們具有不同的特性。
actionlistener:它在eclipse和netbeans兩個(gè)不同的ide中表現(xiàn)出了不同的效果- -。在eclipse中,每當(dāng)選中新節(jié)點(diǎn)時(shí)被激活;而在netbeans中,選擇新節(jié)點(diǎn)時(shí)它總會被激活兩次。
popupmenulistener:它將選擇節(jié)點(diǎn)的過程細(xì)分為3種類型:下拉菜單彈出;下拉菜單合上;下拉菜單取消。當(dāng)點(diǎn)開下拉菜單,然后放棄選擇時(shí),則下拉菜單取消、下拉菜單合上兩個(gè)事件先后被激活。
itemlistener:將節(jié)點(diǎn)的事件分為2種類型:selected和deselected。對于每種事件,均可以調(diào)用getitem()方法來獲取相應(yīng)節(jié)點(diǎn)。
因此,如果業(yè)務(wù)邏輯只關(guān)心最新被選中的節(jié)點(diǎn),那么使用itemlistener是比較合適的。希望本文所述對大家java程序設(shè)計(jì)有所幫助。
原文鏈接:http://www.cnblogs.com/pzy4447/p/4641463.html