JAVA中出现严重的null错误信息ArrayIndexOutOfBoundsException:-1

代码如下:一个按钮的事件,搜索数据库,查找到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);
最新回答
天生萌货

2024-10-22 10:03:58

是这样的:
你这个按钮应该随时都可以用吧?
所以如果用户没有在jTable5中作任何选择
jTable5.getSelectedRow()方法会返回-1(看看帮助文档把)

DefaultTableModel的内部实现使用一个Vector作为动态数组,
所以当你使用-1作为jTable5.getValueAt()的参数,隐含的
调用了Vector.elementAt(-1) 所以会抛出一个“数组越界”
异常。

恩,一起研究Java qq:412475540
你伴我暖

2024-10-22 11:04:05

String id = jTable5.getValueAt(jTable5.getSelectedRow(), 0).toString();
数组下表越位,看看jTable5.getSelectedRow()返回的是从0开始还是1开始计数的。
天生小仙女

2024-10-22 15:51:32

addCai framea = new addCai(name); 这里面有特别的代码没,贴出来看看
冬瑾凉桉

2024-10-22 14:15:46

数组越界了,你把addCai类的那个构造方法给贴出来看看
-她滥我情

2024-10-22 08:31:32

非法索引访问数组,应该是再方法addCai中出现的异常。
年少总有梦

2024-10-22 09:57:37

数组越界```