天天看点

JavaGUI中的JComboBox的处理

jcombobox的事件处理

jcombobox的事件处理亦可分为两种,一种是取得用户选取的项目;另一种是用户在jcombobox上自行输入完毕后按下[enter]键,

    运作相对应的工作。对于第一种事件的处理,我们使用itemlistener.对于第二种事件的处理,我们使用actionlistener.

这个范例用户可以选取所要的字号,字号的变化会呈现在jlabel上,并可让用户自行输入字体的大小。当用户按下[enter]键后 ,若用户输入的值不在选项上时,此输入值会增加至jcombobox中,并将输入字体的大小显示在jlabel上。

<pre class="code">import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

public class jcombobox8 implements itemlistener,actionlistener{

   string[] fontsize={"12","14","16","18","20","22","24","26","28"};

   string defaultmessage="请选择或直接输入文字大小!";

   font font=null;

   jcombobox combo=null;

   jlabel label=null;

   public jcombobox8(){

     jframe f=new jframe("jcombobox");

     container contentpane=f.getcontentpane();

     contentpane.setlayout(new gridlayout(2,1));

     label=new jlabel("swing",jlabel.center);

     font=new font("sansserif",font.plain,12);

     label.setfont(font);

     combo=new jcombobox(fontsize);

     combo.setborder(borderfactory.createtitledborder("请选择你要的文字大小:"));

     combo.seteditable(true);

     comboboxeditor editor=combo.geteditor();

     combo.configureeditor(editor,defaultmessage);

     combo.additemlistener(this);0

     combo.addactionlistener(this);

     contentpane.add(label);

     contentpane.add(combo);

      f.pack();

      f.show();

      f.addwindowlistener(new windowadapter(){

     public void windowclosing(windowevent e){

       system.exit(0);

     }

      });   

   }

   public static void main(string[] args){

     new jcombobox8();

   }

   public void actionperformed(actionevent e){

      boolean isadditem=true;

      int fontsize=0;

      string tmp=(string)combo.getselecteditem();

      //判断用户所输入的项目是否有重复,若有重复则不增加到jcombobox中。

      try{

         fontsize=integer.parseint(tmp);

         for(int i=0;i< combo.getitemcount();i++){

            if (combo.getitemat(i).equals(tmp)){

              isadditem=false;

              break;

            }

         }

         if (isadditem){

          combo.insertitemat(tmp,0);//插入项目tmp到0索引位置(第一列中).

         font=new font("sansserif",font.plain,fontsize);

         label.setfont(font);         

      }catch(numberformatexception ne){

         combo.geteditor().setitem("你输入的值不是整数值,请重新输入!");

      }

   public void itemstatechanged(itemevent e){//itemlistener界面只有itemstatechanged()一个方法,在此实作它。

      if (e.getstatechange()==itemevent.selected){//当用户的选择改变时,则在jlabel上会显示出swing目前字形大小信息.

         int fontsize=0;

         try{

           fontsize=integer.parseint((string)e.getitem());

           label.settext("swing 目前字形大小:"+fontsize);           

         }catch(numberformatexception ne){//若所输入的值不是整数,则不作任何的操作.

}

import java.awt.*;

import javax.swing.*;  

public class testframe extends jframe implements itemlistener

{  

 jcombobox combobox;

   jpanel p=new jpanel(); 

 jbutton c;

 jbutton c2 ;

  public testframe()

  {

 jbutton c=new jbutton("a") ;

 jbutton c2=new jbutton("b") ;

combobox=new jcombobox();

 combobox.additem("1");

 combobox.additem("2");

 combobox.additem("3");

 combobox.additemlistener(this);

 p.add( combobox);

     this.getcontentpane().add(p);  

    this.setdefaultcloseoperation(jframe.exit_on_close);  

    this.setsize(360, 260);  

    this.setvisible(true);  

 }  

 public void itemstatechanged(itemevent e)

 {

       if(e.getstatechange() == itemevent.selected)

            {

              string s=(string)combobox.getselecteditem();

                 system.out.println(s);

             }

}  

 public static void main(string args[]) 

 {  

  new testframe();  

继续阅读