基础知识介绍:
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;
}
}
```