【個人學習筆記】二級聯動
阿新 • • 發佈:2018-12-18
基礎知識介紹: 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;
}
}
```