数据库里有二个表:①专业表:专业ID,专业名;②班级表:班级ID,班级名,专业ID;
现在我用SWING做了一个界面,二个下拉列表,一个文本框,下拉列表一的值为各专业ID,下拉列表二的的值为(根据专业ID选出的班级ID),文本框的值为(根据班级ID选出的班级名),
现在我抛开文本框不管,只做(根据专业ID选出的班级ID),给下拉列表一加个监听器,改变下拉列表一的值,下拉列表二的值也会根着改变,这我是做成功了,然后我再加上个文本框,给下拉列表二加个监听器后,运行时如果第一次你不改变下拉列表一的值的话,只是改变下拉列表二的值,那文本框里的内容是能显示出(根据班级ID选出的班级名),可是一改变下拉列表一的值的话,就会产生一个空指针异常,请问应该怎么解决啊?下面是二个下拉列表监听的内容:
public void cbobj_id_actionPerformed(ActionEvent e) {
String name = null;
String str_bj_id = cbobj_id.getSelectedItem().toString();//空指针异常出现在这一行
int bj_id = Integer.parseInt(str_bj_id);
Vector temp = db.query(
"select banji_name from banji where banji_id=" + bj_id);
for (int i = 0; i < temp.size(); i++) {
Vector onename = (Vector) temp.elementAt(i);
name = (String) onename.elementAt(0);
}
txtbj_name.setText(name);
}
public void cbozy_id_actionPerformed(ActionEvent e) {
String str_zy_id = cbozy_id.getSelectedItem().toString();
int zy_id = Integer.parseInt(str_zy_id);
cbobj_id.removeAllItems();
Vector bj_id = db.query("select banji_id from banji where zy_id=" +
zy_id); //班级编号的下拉列表
for (int i = 0; i < bj_id.size(); i++) {
Vector oneid = (Vector) bj_id.elementAt(i);
cbobj_id.addItem(oneid.elementAt(0));
}
cbobj_id.removeActionListener(cbobj_id.getAction());//试过重新注册监听器,但也不管用
cbobj_id.addActionListener(new insert_bj_Dialog_cbobj_id_actionAdapter(this));
}
请各位朋友多多指教一下哦。。。