0

行を選択し、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ステートメントです。配列が表示されなかったため、コードの何が問題になっているのかわかりません。誰かがそれを修正できますか?前もって感謝します。

4

1 に答える 1

6

の有効なパラメータではないjTable.getSelectedRow()returnsのようです。これは、jtableの行が選択されていない場合に発生する可能性があります。-1jTable.getValueAt()

ドキュメントから:

最初に選択された行のインデックスを返します。行が選択されていない場合は-1を返します。

状態を次のように更新する必要があります。

if (jTable.getSelectedRow() >= 0 && jTable.getValueAt(jTable.getSelectedRow(), 0) != null) {
于 2012-12-23T12:29:38.077 に答える