欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Java Swing组件下拉菜单控件JComboBox用法示例

程序员文章站 2024-04-01 21:10:10
本文实例讲述了java swing组件下拉菜单控件jcombobox用法。分享给大家供大家参考,具体如下: jcombobox是swing中的下拉菜单控件。它永远只能选中...

本文实例讲述了java swing组件下拉菜单控件jcombobox用法。分享给大家供大家参考,具体如下:

jcombobox是swing中的下拉菜单控件。它永远只能选中一个项目,然而比单选按钮节省空间。如果使用seteditable设置为true则内部选项的文本可以编辑,因此这种组件被称为组合框。注意,对选项的编辑只会影响当前项,而不会改变列表内容。可以使用additem方法来添加选项列表,或者使用insertitemat在任何位置插入选项;然而如果有大量选项需要添加,这种方法是非常笨重的,可以先构造一个defaultcomboboxmodel,使用addelement加载选项,最后在调用jcombobox的setmodel方法。

常用方法如下:

Java Swing组件下拉菜单控件JComboBox用法示例

示例代码:

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)。运行效果如下:

Java Swing组件下拉菜单控件JComboBox用法示例

下面分析jcombobox的事件响应。程序中使用了3个不同的事件响应函数,他们具有不同的特性。

actionlistener:它在eclipse和netbeans两个不同的ide中表现出了不同的效果- -。在eclipse中,每当选中新节点时被激活;而在netbeans中,选择新节点时它总会被激活两次。

popupmenulistener:它将选择节点的过程细分为3种类型:下拉菜单弹出;下拉菜单合上;下拉菜单取消。当点开下拉菜单,然后放弃选择时,则下拉菜单取消、下拉菜单合上两个事件先后被激活。

itemlistener:将节点的事件分为2种类型:selected和deselected。对于每种事件,均可以调用getitem()方法来获取相应节点。

因此,如果业务逻辑只关心最新被选中的节点,那么使用itemlistener是比较合适的。

更多关于java相关内容感兴趣的读者可查看本站专题:《java数据结构与算法教程》、《java字符与字符串操作技巧总结》、《java操作dom节点技巧总结》、《java文件与目录操作技巧汇总》和《java缓存操作技巧汇总

希望本文所述对大家java程序设计有所帮助。