2017-03-19 75 views
0

我試圖顯示給出元素百分比的經驗公式計算說明。邏輯現在的工作,但是當我嘗試顯示指示,我提示以下錯誤:編輯:AWT-EventQueue-0 ArrayIndexOutOfBoundsException JTable

Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 1 
at javax.swing.JTable$1.getValueAt(Unknown Source) 
at javax.swing.JTable.getValueAt(Unknown Source) 
at javax.swing.JTable.prepareRenderer(Unknown Source) 

當我點擊按鈕顯示的公式是如何計算的說明這纔會出現。在實例化數據數組和JTable時沒有問題,但是當我嘗試呈現JTable時,會發生這些錯誤。 JTable的TableHeader呈現正常,但JTable本身不。這裏是代碼:

public void giveInstructions() { 
    String[] columnNames = { "Atom", "Percent", "Molar Mass", "Divide by Molar Mass", "Divide by Smallest Moles", 
      "Coefficient" }; 
    Object[][] data = new Object[6][elemInForm]; 
    for (int i = 0; i < elemInForm; i++) { 
     data[0][i] = elementEnter[i]; 
    } 
    for (int i = 1; i < 6; i++) { 
     for (int j = 0; j < elemInForm; j++) { 
      data[i][j] = Float.valueOf(elemVals[i-1][j]); 
      System.out.println(j); 
      System.out.println(i); 
     } 
    } 
    inst4Empir = new JTable(data, columnNames); 
    inst4Empir.setPreferredScrollableViewportSize(new Dimension(700, 700)); 
    inst4Empir.setFillsViewportHeight(true); 

    instructions.add(inst4Empir.getTableHeader(), BorderLayout.PAGE_START); 
    instructions.add(inst4Empir, BorderLayout.CENTER); 
    // instructions.pack(); 
    instructions.setVisible(true); 
} 

} 

該錯誤發生在instructions.add(inst4Empir,BorderLayout.CENTER);並與instructions.setVisible(true); 問題不在於將值輸入數組,而是發生ArrayIndexOutOfBoundsException。

編輯:問題發生在instructions.add(inst4Empir,BorderLayout.CENTER);顯示上。該數組正在初始化並填充很好。當顯示器試圖渲染它時,JTable將導致OutOfBoundsException異常。我已經打印了用於填充數組的值,它們都很好。

+0

歡迎來到SO。 TL; DR。請發佈[MCVE]:張貼最低限度以顯示您的問題。 (寫一個最簡單的案例是一個很好的調試技巧,這樣做很可能解決你的問題。) – c0der

回答

0
java.lang.ArrayIndexOutOfBoundsException 

發生在數組大小小於數據插入數組時。 例如: - 試圖保存值成未分配存儲器空間(索引= 3)時

public static void main(String[] args) { 
    int[] arr = new int[3]; 
    arr[0] = 3; 
    arr[1] = 4; 
    arr[2] = 5; 
    arr[3] = 5; 
} 

這裏例外發生在arr[3]=5