我试图显示给定元素百分比的经验公式的计算指令。逻辑现在正常工作但当我尝试显示指令时,我收到以下错误:
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 :(得分: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)时发生异常。