2016-07-27 17 views
1

我有帶有多列的JTable。當我點擊了表格行,值改變方法調用多次,最後扔單擊JTable行時,valueChanged(ListSelectionEvent e)方法正在調用多次

java.lang.ArrayIndexOutOfBoundsException的錯誤:-1

我的代碼是

subjectTable.getSelectionModel().addListSelectionListener(new ListSelectionListener() { 

     @Override 
     public void valueChanged(ListSelectionEvent e) { 
      System.out.println("Value IS Adjusting --> " + e.getValueIsAdjusting()); 

      try { 

       if(subjectTable.getSelectedRow() == -1) 
        return; 

       if(!e.getValueIsAdjusting()) { 

        System.out.println("Selected Row --> " + subjectTable.getSelectedRow()); 
        System.out.println("Selected Value of Column 0 --> " + subjectTable.getValueAt(subjectTable.getSelectedRow(), 0).toString()); 

        cmbClass.setSelectedItem(subjectTable.getValueAt(subjectTable.getSelectedRow(), 0).toString()); 
        txtSubjectName.setText(subjectTable.getValueAt(subjectTable.getSelectedRow(), 1).toString()); 
        txtFullMarks.setText(subjectTable.getValueAt(subjectTable.getSelectedRow(), 2).toString()); 
        txtPassMarks.setText(subjectTable.getValueAt(subjectTable.getSelectedRow(), 3).toString()); 
        cmbGrade.setSelectedItem(subjectTable.getValueAt(subjectTable.getSelectedRow(), 4).toString()); 
       } 
      } catch (IndexOutOfBoundsException ex) { 
       ex.printStackTrace(); 
       new KILogger("Error in the value changed, Edit Subject table", ex); 
      } 
     } 
    }); 

我得到了這樣的錯誤:

enter image description here

+0

我不知道這是什麼問題。但現在通過執行以下代碼來解決它: –

回答

1

我不知道這是什麼問題。但現在它通過執行以下代碼來解決:

subjectTable.getSelectionModel().addListSelectionListener(new ListSelectionListener() { 

     @Override 
     public void valueChanged(ListSelectionEvent e) { 

      try { 

       if(subjectTable.getSelectedRow() == -1) 
        return; 

       if(!e.getValueIsAdjusting()) { 

        txtSubjectName.setText(subjectTable.getValueAt(subjectTable.getSelectedRow(), 1).toString()); 
        txtFullMarks.setText(subjectTable.getValueAt(subjectTable.getSelectedRow(), 2).toString()); 
        txtPassMarks.setText(subjectTable.getValueAt(subjectTable.getSelectedRow(), 3).toString()); 
        cmbGrade.setSelectedItem(subjectTable.getValueAt(subjectTable.getSelectedRow(), 4).toString()); 
       } 
      } catch (IndexOutOfBoundsException ex) { 
       ex.printStackTrace(); 
       new KILogger("Error in the value changed, Edit Subject table", ex); 
      } 
     } 
    }); `