下拉列表框(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方法
}
}