【个人学习笔记】ComboBox 二级联动

 

 基础知识介绍:
ComboBoxModel是一个combo box的一个数据模型,其中引入了selected  item的概念,被选中的元素在combo box的显示区域可以显示出来。
 程序运行分析
程序执行JComboBox时,系统会首先调用getSize()方法,计算JComboBox长度,然后再调用getElementAt()方法(返回指定索引处的列表项),将String s中的值添加到JComboBox中。在选择项目时,系统会调用getSelectedItem()(返回当前所选项),通过调用setSelectedItem()方法将选择的项目显示到最前端。(这两个方法目的是让用户选取某个项目后,可正确地显示出用户所选取的项目。)
 部分代码解析

 

            
                List<String> array=new ArrayList<String>();//创建一个List集合
		array.add("河南");
		array.add("新疆");//在集合里通过add()方法放入数据 
		
 		final List<String> arraycity1=new ArrayList<String>();
 		arraycity1.add("郑州");
 		arraycity1.add("周口");
		
		final List<String> arraycity2=new ArrayList<String>();
		arraycity2.add("乌鲁木齐");
		arraycity2.add("伊犁");

                ComboboxModel cm=new ComboboxModel(array);

 
 

对与第一个comboBox添加事件,实现第一个comboBox的省份选项改变第二个comboBox的内容变成相应省市的城市,即一种联动效果。

         comboBox.addItemListener(new ItemListener(){
 
         @Override
          public void itemStateChanged(ItemEvent e) {
              // TODO Auto-generated method stub
              if(e.getItem().equals("河南")){
                  ComboboxModel cm1=new ComboboxModel(arraycity1);
                  comboBox_1.setModel(cm1);
                  //comboBox_1.invalidate();//切换数据源之后的刷新
              }
              else if (e.getItem().equals("新疆")){
                  ComboboxModel cm2=new ComboboxModel(arraycity2);
                  comboBox_1.setModel(cm2);
                  //comboBox_1.invalidate();
              }
          }

 

 

ConboBoxModel的代码
 

import java.util.List;

import javax.swing.ComboBoxModel;
import javax.swing.event.ListDataListener;

public class ComboboxModel implements ComboBoxModel {

    private List<String> array;
    private String SelectedString;
    public ComboboxModel(List<String> array){
        this.array=array;
    }
    @Override
    public int getSize() {
        // TODO Auto-generated method stub
        return array.size();//系统会首先调用getSize()方法,计算JComboBox长度
    }

    @Override
    public Object getElementAt(int index) {
        // TODO Auto-generated method stub
        return array.get(index);
    }//然后再调用getElementAt()方法(返回指定索引处的列表项)将array的值添加到JComboBox中。

    @Override
    public void addListDataListener(ListDataListener l) {
        // TODO Auto-generated method stub
        
    }

    @Override
    public void removeListDataListener(ListDataListener l) {
        // TODO Auto-generated method stub
        
    }

    @Override
    public void setSelectedItem(Object anItem) {
        // TODO Auto-generated method stub
        //把ComboBox显示成 所选中的项目值
        SelectedString =(String)anItem;
    }

    @Override
    public Object getSelectedItem() {
        // TODO Auto-generated method stub
        //返回选中的项目值
        return SelectedString;
    }

 

}

 

```

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值