编辑:AWT-EventQueue-0 ArrayIndexOutOfBoundsException JTable

时间:2017-03-19 03:55:47

标签: java swing jtable awt indexoutofboundsexception

我试图显示给定元素百分比的经验公式的计算指令。逻辑现在正常工作但当我尝试显示指令时,我收到以下错误:

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。我已经打印了用于填充数组的值,它们很好。

1 个答案:

答案 0 :(得分:0)

java.lang.ArrayIndexOutOfBoundsException  
当数组大小小于插入数组的数据时,会发生

。 例如: -

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尝试将值保存到未分配的内存空间(index = 3)时发生异常。