2017-03-19 7 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)で起こります。そして命令で。setVisible(true); 問題は、配列に値を入力してArrayIndexOutOfBoundsExceptionが発生することではありません。

EDIT:instructions.add(inst4Empir、BorderLayout.CENTER);のディスプレイで問題が発生しています。配列が初期化されていて、うまく配置されています。ディスプレイがレンダリングしようとすると、JTableはOutOfBoundsExceptionを発生させます。私は、配列に値を設定するために使用されている値を表示しています。

+0

ようこそ。 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で起こります。

関連する問題