下拉列表框(JComboBox)

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




  • 4
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值