2017-03-19 3 views
0

J'essaie d'afficher des instructions pour calculer des formules empiriques données pour des pourcentages d'éléments. La logique fonctionne en ce moment, mais lorsque je tente d'afficher les instructions, je me donne l'erreur suivante:Editer: 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) 

Ceci apparaît uniquement lorsque je clique sur le bouton pour afficher les instructions sur la façon dont la formule est calculée. Il n'y a aucun problème instanciant le tableau de données ni le JTable, mais quand j'essaye de rendre le JTable, ces erreurs se produisent. Le TableHeader de JTable est très bien rendu, mais pas JTable lui-même. Voici le code:

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); 
} 

} 

L'erreur se produit avec le instructions.add (inst4Empir, BorderLayout.CENTER); et avec instructions.setVisible (true); Le problème n'est pas d'entrer les valeurs dans le tableau et une exception ArrayIndexOutOfBoundsException se produit là.

EDIT: Le problème se produit avec l'affichage à instructions.add (inst4Empir, BorderLayout.CENTER) ;. Le tableau est en cours d'initialisation et rempli correctement. Lorsque l'affichage tente de le rendre, le JTable provoque une exception OutOfBoundsException. J'ai imprimé les valeurs utilisées pour remplir le tableau et ils vont bien.

+0

Bienvenue chez SO. TL; DR. S'il vous plaît Poster un [MCVE]: postez le strict minimum pour montrer votre problème. (L'écriture d'un minuscule cas est une bonne technique de débogage, ce qui vous permettra de résoudre votre problème.) – c0der

Répondre

0
java.lang.ArrayIndexOutOfBoundsException 

se produit lorsque la taille du tableau est inférieure à celle des données insérées dans le tableau. par exemple: -

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

ici exception se produit à arr[3]=5 lorsque vous essayez d'enregistrer la valeur dans un espace mémoire non alloué (indice = 3).