Java ArrayIndexOutOfBoundsException错误消息

Java ArrayIndexOutOfBoundsException错误消息,java,sql,swing,Java,Sql,Swing,我尝试选择一行,并使用jTable将行值存储到topicId中。然后,我使用刚才得到的topicId从数据库中检索数据。这是我的密码 jTable.addMouseListener(new java.awt.event.MouseAdapter() { public void mouseClicked(java.awt.event.MouseEvent e) { if (jTable.getValueAt(jTable.getSel

我尝试选择一行,并使用jTable将行值存储到topicId中。然后,我使用刚才得到的topicId从数据库中检索数据。这是我的密码

    jTable.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent e) {
                if (jTable.getValueAt(jTable.getSelectedRow(), 0) != null) {
                    int topicId = (Integer)jTable.getValueAt(jTable.getSelectedRow(), 0);}
                eForumTopics topics = new eForumTopics(topicId);
                topics.retrieveThread();
                getJFrame().dispose();
                eForumThreadContent myWindow = new eForumThreadContent(topicId);
                myWindow.getJFrame().setVisible(true);
            }
        });
但是,我收到了这个错误消息

    Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: -1
at java.util.Vector.elementAt(Unknown Source)
at javax.swing.table.DefaultTableModel.getValueAt(Unknown Source)
at javax.swing.JTable.getValueAt(Unknown Source)
at kioskeForum.ui.eForumDiscussion$3.mouseClicked(eForumDiscussion.java:295)

第295行是if语句。我不知道我的代码有什么问题,因为我没有看到任何数组。有人能修好吗?提前感谢。

它看起来像是
jTable.getSelectedRow()
返回
-1
,这不是
jTable.getValueAt()
的有效参数。如果未选择jtable中的任何行,则可能发生这种情况

从文件中:

返回第一个选定行的索引,如果未选择任何行,则返回-1

您应该将您的条件更新为以下内容:

if (jTable.getSelectedRow() >= 0 && jTable.getValueAt(jTable.getSelectedRow(), 0) != null) {

它看起来像是
jTable.getSelectedRow()
返回
-1
,这不是
jTable.getValueAt()
的有效参数。如果未选择jtable中的任何行,则可能发生这种情况

从文件中:

返回第一个选定行的索引,如果未选择任何行,则返回-1

您应该将您的条件更新为以下内容:

if (jTable.getSelectedRow() >= 0 && jTable.getValueAt(jTable.getSelectedRow(), 0) != null) {

if语句是否与这些代码相同?int-topicId=jTable.getSelectedRow()。我的意思是,它们是否都有相同的目的来获取所选行的数量并存储到topicId中?但为什么即使在我单击表的第二行和第三行时,它仍不断向我返回0的值?if语句是否与这些代码相同?int-topicId=jTable.getSelectedRow()。我的意思是,在获取所选行数并将其存储到topicId中时,这两种方法是否具有相同的目的?但为什么即使在我单击表的第二行和第三行时,它也会不断向我返回0的值?请学习java命名约定并坚持它们-现在请学习java命名约定并坚持它们-现在