下拉列表框(JComboBox)
构造函数:
JComboBox():建立一个新的JComboBox组件。
JComboBox(ComboBoxModel aModel):用ListModel建立一个新的JComboBox组件。
JComboBox(Object[] items):利用Array对象建立一个新的JComboBox组件。
JComboBox(Vector items):利用Vector对象建立一个新的JComboBox组件
JComboBox类的常用方法:
public void addItem(Object anObject) :为下拉列表添加选项
public void setEditable (boolean aflag):设置下拉列表框是否可编辑
public int getMaximumRowCount():获取组合框不使用滚动条可显示的最大项数
public void getItemCount():获取列表中的选项总数
public Object getItemAt(int index):获取列表项中指定索引的选项
public int getSelectedIndex():获取被选中选项的索引
public Object getSelsectedItem():获取当前选中的选项
public void removeItem(Object anObject):从下拉列表中删除指定选项
public void removeAllItems():删除列表中的所有选项
public void showPopup():显示弹出列表窗口
public void hidePopup():关闭弹出列表窗口
当选项发生变化,可能是用户在下拉列表中选中了另外一个值;也可能是在坑编辑的情况下输入新值后按下回车键,下拉列表框会触发ItemEvent事件。
当用户提交一个选中值时,又会触发ActionEvent事件
JComboBox类中的注册和注销这两种事件监听器的方法有以下4种:
public void addAtionListener(ActionListener I):注册ActionListener
public void addItemListener(ItemListener listener):注册ItemListener
代码实例:
package ch10; import java.awt.*; import java.awt.event.*; import javax.swing.*; //创建公开的ItemTest类 public class ItemTest {//声明窗体、下拉列表框、标签、下拉列表框数据模型数组 private JFrame jf; private JComboBox box1,box2; private JLabel label1; private JLabel label2; private Object[] obj1;//省份 private Object[][] obj2;//城市 //构造方法,传入数据模型数组 public ItemTest(Object[] obj1,Object[][] obj2) {//创建窗体、下拉列表框、标签,将相应的组件添加到容器中 this.obj1=obj1; this.obj2=obj2; jf=new JFrame("下拉列表框测试"); box1=new JComboBox(obj1); box2=new JComboBox(obj2[0]); label1=new JLabel("省份:"); label2=new JLabel("城市:"); jf.setLayout(new FlowLayout()); jf.add(label1); jf.add(box1); jf.add(label2); jf.add(box2); addEventHandler();//调用addEventHandler方法 } //addEventHandler方法,为下拉列表框注册和注销监听器 public void addEventHandler() { box1.addItemListener(new ItemListener() {//注册ItemListener监听器,重写方法 public void itemStateChanged(ItemEvent arg0) {//重写itemStateChanged方法 int index=box1.getSelectedIndex();//获取box1选中选项的索引 box2.removeAllItems();//移除box2的所有选项 for(int i=0;i<obj2[index].length;i++) {//给box2添加选项 box2.addItem(obj2[index][i]); } } }); } //showMe方法,设置窗体的属性 public void showMe(){ jf.setSize(350,200); jf.setVisible(true); jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } //主方法 public static void main(String[] args) {//初始化obj1和obj2数组 Object[] obj1=new Object[]{"==请选择==","广东","山东","河北","河南","江苏","辽宁"}; Object[][] obj2=new Object[][]{ {"==请选择=="},{"广州","深圳","汕头","佛山","中山"}, {"济南","泰安","青岛","烟台","威海","潍坊"},{"石家庄","保定","廊坊","邯郸","秦皇岛"}, {"郑州","安阳","洛阳","南阳","开封","许昌"},{"南京","苏州","徐州","扬州","无锡"}, {"沈阳","丹东","大连","锦州","铁岭","辽阳"} }; new ItemTest(obj1,obj2).showMe();//创建ItemTest对象,传入数组,调用showMe方法 } }