Java Swing组件下拉菜单控件JComboBox用法示例
本文实例讲述了java swing组件下拉菜单控件jcombobox用法。分享给大家供大家参考,具体如下:
jcombobox是swing中的下拉菜单控件。它永远只能选中一个项目,然而比单选按钮节省空间。如果使用seteditable设置为true则内部选项的文本可以编辑,因此这种组件被称为组合框。注意,对选项的编辑只会影响当前项,而不会改变列表内容。可以使用additem方法来添加选项列表,或者使用insertitemat在任何位置插入选项;然而如果有大量选项需要添加,这种方法是非常笨重的,可以先构造一个defaultcomboboxmodel,使用addelement加载选项,最后在调用jcombobox的setmodel方法。
常用方法如下:
示例代码:
jcomboboxbasicusedemo.java
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.jb51.net"); setsize(default_width, default_height); //添加label label = new jlabel("欢迎来到 www.jb51.net"); 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.jb51.net)。运行效果如下:
下面分析jcombobox的事件响应。程序中使用了3个不同的事件响应函数,他们具有不同的特性。
actionlistener:它在eclipse和netbeans两个不同的ide中表现出了不同的效果- -。在eclipse中,每当选中新节点时被激活;而在netbeans中,选择新节点时它总会被激活两次。
popupmenulistener:它将选择节点的过程细分为3种类型:下拉菜单弹出;下拉菜单合上;下拉菜单取消。当点开下拉菜单,然后放弃选择时,则下拉菜单取消、下拉菜单合上两个事件先后被激活。
itemlistener:将节点的事件分为2种类型:selected和deselected。对于每种事件,均可以调用getitem()方法来获取相应节点。
因此,如果业务逻辑只关心最新被选中的节点,那么使用itemlistener是比较合适的。
更多关于java相关内容感兴趣的读者可查看本站专题:《java数据结构与算法教程》、《java字符与字符串操作技巧总结》、《java操作dom节点技巧总结》、《java文件与目录操作技巧汇总》和《java缓存操作技巧汇总》
希望本文所述对大家java程序设计有所帮助。
上一篇: JVM 心得分享(加载 链接 初始化)