代码如下:一个按钮的事件,搜索数据库,查找到ID传参给另外一个窗口 private void jButton5ActionPerformed(java.awt.event.ActionEvent evt) { try { DateAccess da = new DateAccess(); String id = jTable5.getValueAt(jTable5.getSelectedRow(), 0).toString(); ResultSet rs = da.ExecuteQuery("SELECT STABLE FROM STARTTABLE WHERE STID='"+id+"'"); if (rs.next()) { String name = rs.getString(1); if (name != null) { addCai framea = new addCai(name); framea.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); framea.setVisible(true); }else{ JOptionPane.showMessageDialog(this, "请选择一个包厢!","错误",JOptionPane.ERROR_MESSAGE); } } } catch (Exception ex) { Logger.getLogger(MainApplication.class.getName()).log(Level.SEVERE, null, ex); } }然后错误提示:java.lang.ArrayIndexOutOfBoundsException: -1 at java.util.Vector.elementAt(Vector.java:430) at javax.swing.table.DefaultTableModel.getValueAt(DefaultTableModel.java:632) at javax.swing.JTable.getValueAt(JTable.java:2638)等等有很多下面就不列出来了调试的时候在执行这段代码的时候跳入catch语句addCai framea = new addCai(name);
是这样的:你这个按钮应该随时都可以用吧?所以如果用户没有在jTable5中作任何选择jTable5.getSelectedRow()方法会返回-1(看看帮助文档把)DefaultTableModel的内部实现使用一个Vector作为动态数组,所以当你使用-1作为jTable5.getValueAt()的参数,隐含的调用了Vector.elementAt(-1) 所以会抛出一个“数组越界”异常。恩,一起研究Java qq:412475540
String id = jTable5.getValueAt(jTable5.getSelectedRow(), 0).toString(); 数组下表越位,看看jTable5.getSelectedRow()返回的是从0开始还是1开始计数的。