yannOpenGL
Messages postés141Date d'inscriptionsamedi 4 février 2012StatutMembreDernière intervention 3 avril 2013
-
29 juin 2012 à 14:33
cs_GodConan
Messages postés2113Date d'inscriptionsamedi 8 novembre 2003StatutContributeurDernière intervention 6 octobre 2012
-
2 juil. 2012 à 18:21
Bonjour,
j'ai un problème avec mon code lorsque je rempli une JTable. L'erreur est la suivante :
java.lang.ArrayIndexOutOfBoundsException
En fait j'utilise deux classes (une par fenêtre), une qui affiche une JTable avec un modèle dynamique et une qui permet d'ajouter des lignes à la JTable.
Entre les 2 classes je transmet un tableau String[][]. Il circule entre les 2. Chaque fois que je décide d'ajouter une ligne à ma JTable, je crée un nouveau tableau dans ma classe d'ajout avec une ligne de plus que l'ancien. Je copie l'ancien dans le nouveau et j'ajoute les dernières données dans la dernière ligne. Puis j'ouvre de nouveau la fenêtre avec la JTable en lui envoyant le nouveau tableau.
Je ne suis pas sûr d'avoir été très clair donc je vais mettre quelques parties du code.
Code permettant d'ajouter les données du tableau dans la JTable (code de la fenêtre avec la JTable):
public AffichageJTable(tableau) {
for (int j=0 ; j<tableau[0].length ; j++)
{
modeleDynamique.addData(new DataBDD(tableau[0][j], tableau[1][j], tableau[2][j]));
}
jtable = new JTable(modeleDynamique);
}
Code permettant d'ajouter la ligne :
public Ajout(tableau0) {
String nom = comboBox.getSelectedItem().toString();
String dose = spinnerDose.getValue().toString();
String unite = labelUnite.getText();
int sizeNouveauTableau = sizeTableau0+1;
String[][] nouveauTableau = new String[3][sizeNouveauTableau];
for(int i=0 ; i<sizeNouveauTableau-1 ; i++) nouveauTableau[i] = tableau0[i];
nouveauTableau[0][sizeNouveauTableau-1] = nom;
nouveauTableau[1][sizeNouveauTableau-1] = dose;
nouveauTableau[2][sizeNouveauTableau-1] = unite ;
new AffichageJTable(nouveauTableau).setVisible(true);
}
Avez-vous une idée d'où peut venir le problème ?
Sachant que mon code marche pour le 1er ajout mais plante dès le 2ème.
J'ai beau chercher, je ne comprend pas pourquoi.