button2的事件中有jList1.setListData(str);操作,它会促发事件去执行void jList1_valueChanged(ListSelectionEvent e) 方法,而在这个方法中第一句:
jList1.getSelectedValue().toString();有问题。
此时并没有选择,你还要toString(),所以抛异常建议编写这个代码时,首先判断jList1.getSelectedValue()!=null
然后再用。
jList1.getSelectedValue().toString();有问题。
此时并没有选择,你还要toString(),所以抛异常建议编写这个代码时,首先判断jList1.getSelectedValue()!=null
然后再用。
555555555555~~~~~~~~~~
valuechanged事件,所以又连接了一次
本来一直都很好的,昨天突然就不正常了
我试了各种SAMPLES,只要是JLIST的VALUECHANGED事件都会连接数据库两次,真要命
而不是一次事件连接了两次数据库。
郁闷ing...
然后跟踪(F8)看看是执行的多少遍..
告诉我.
你对list做数据变更都会促发事件的。
你现在的想法是?
private voic conn(){
String query = "SELECT customName FROM CustomInfo WHERE customID ="+jList1.getSelectedValue().toString();
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
con = DriverManager.getConnection(sql);
stmt = con.createStatement();
rs=stmt.executeQuery(query);
rs.next();
}这个con.stmt,rs都定义成private String然后:
void jList1_valueChanged(ListSelectionEvent e) {
try{
this.conn();
jTextField1.setText(rs.getString("customName"));
stmt.close();
con.close();
}catch(Exception ex){
System.err.println(ex.getMessage());
}
}你看看几次...就可以知道毛病了..
对! 我跟踪了,确实是触发了两次valuechanged,但是不知道为什么
我觉得是你设计上的问题。