2017-03-19 7 views
0

요소 백분율로 주어진 경험적 공식을 계산하기위한 지침을 표시하려고합니다. 논리는 지금 작동하지만 내가 지침을 표시 할 때, 나는 다음과 같은 오류를 제공하고있다 : I 수식 계산 방법에 대한 지침을 표시 버튼을 클릭하면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을 발생시키는 것이 문제가 아닙니다.

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에서 일어난다.