两个JComboBox组件A和B,当A选中一项后,B根据A的选中项,从数据库中查询,并填入B中。
现在的问题是希望A选中后才去查询,如果通过在A上加ActionListener或ItemChangeListener监听器,当用键盘的上下方向键在A上移动时,也会触发相应的时间,也就是会去查询数据库,我希望是在用户用上下键选中某项后回车后再去查询数据库,并且用鼠标选择也可以,像这种情况如何实现?
现在的问题是希望A选中后才去查询,如果通过在A上加ActionListener或ItemChangeListener监听器,当用键盘的上下方向键在A上移动时,也会触发相应的时间,也就是会去查询数据库,我希望是在用户用上下键选中某项后回车后再去查询数据库,并且用鼠标选择也可以,像这种情况如何实现?
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;public class ItemEventTest {
private JFrame frame;
private JLabel proLabel,cityLabel;
private JComboBox proBox,cityBox;
private String[] proStr;
private String[][] cityStr;
public ItemEventTest(String[] proStr,String[][] cityStr){
frame=new JFrame("Item Event Test!");
proLabel=new JLabel("省份:");
cityLabel=new JLabel("城市:");
this.proStr=proStr;
this.cityStr=cityStr;
proBox=new JComboBox(proStr);
cityBox=new JComboBox(cityStr[0]);
frame.setLayout(new FlowLayout());
frame.add(proLabel);
frame.add(proBox);
frame.add(cityLabel);
frame.add(cityBox);
}
public void addEventHandler(){
proBox.addItemListener(new ItemListener(){
public void itemStateChanged(ItemEvent arg0) {
int index=proBox.getSelectedIndex();
cityBox.removeAllItems();
for(int i=0;i<cityStr[index].length;i++){
cityBox.addItem(cityStr[index][i]);
}
}
});
}
public void showMe(){
addEventHandler();
frame.setSize(400,300);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String[] args){
String[] proStr={"山东","山西","河北","河南","江苏","浙江"};
String[][] cityStr={
{"济南","烟台","青岛","潍坊","泰安"},
{"太原","大同","平遥","临汾","晋中"},
{"石家庄","保定","唐山","邯郸","秦皇岛"},
{"郑州","安阳","洛阳","开封","南阳"},
{"南京","苏州","扬州","常州","无锡"},
{"杭州","温州","宁波","金华","义乌"}
};
new ItemEventTest(proStr,cityStr).showMe();
}}这里是用数组实现级联的,LZ可以根据从数据库查询结果来更改一下就OK了