1. 程式人生 > >【個人學習筆記】二級聯動

【個人學習筆記】二級聯動

 基礎知識介紹: 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;
    }

 

}

```