2012-12-23 1 views
0

행을 선택하고 행 값을 topicId에 jTable을 사용하여 저장하려고합니다. 그런 다음 topicId를 사용하여 데이터베이스에서 데이터를 검색합니다. 여기 내 코드가 있습니다.ArrayIndexOutOfBoundsException 오류 메시지

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 문입니다. 배열을 보지 못했기 때문에 코드에 문제가있는 것은 아닙니다. 누군가 그것을 고칠 수 있습니까? 미리 감사드립니다.

+0

학습하십시오 자바 명명 규칙 및 그들에 충실 - – kleopatra

답변

6

jTable.getSelectedRow()jTable.getValueAt()의 유효한 매개 변수가 아닌 -1을 반환합니다. jtable의 행을 선택하지 않으면이 문제가 발생할 수 있습니다. 문서에서

:

가 최초로 선택된 행의 인덱스를 돌려 -1 행이 선택되어 있지 않은 경우.

당신은 같은 당신의 상태를 업데이트해야합니다 :

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

_now_합니까 이러한 코드와 동일 if 문? int topicId = jTable.getSelectedRow(); . 나는 그들 모두가 topicId에 선택된 행과 상점의 번호를 얻기 위해 동일한 목적을 제공합니까? – GabrielHeng

+0

무슨 뜻인지 확실치 않습니다. 나는 나의 대답을 업데이트했다. – micha

+0

괜찮아. 고마워. 이제 작동합니다. – GabrielHeng