Bonjour tout le monde , je vous expose mon petit soucis.
Je travaille sur NetBeans.
Je dois créer pour un projet , une application recensant par exemple tout les animaux d'un zoo , les lister dans une jtable et pouvoir ainsi faire des modifications dessus.
On ne s'occupe pas de la persistance des données.
Donc j'ai un menu initialisant le zoo (on a donc-> zoo A= new zoo(); ) ,
Dans Zoo j'ai un Vector<animal> listedesanimaux
mon soucis desormais est d'afficher dans la jTable par exemple :
[ A.getZoo().elementAt(0).getId() ] [A.getZoo().elementAt(0).getNom() ] ....
[ A.getZoo().elementAt(1).getId() ] etc....
Bon les nom de fonction sont fictifs c'est juste pour clarifier ce que je desire faire.
j'ai donc pensé d'abord a faire une boucle contenant ceci :
jTable1.setValueAt("TEST",i,0);
jTable1.setValueAt("TEST1",i,1);
etc ...
avec i = taille de mon vector
Probleme , la taille de mon tableau est trop petit en nombre de ligne (a l'initialisation) et donc j'ai une erreur de pointeur si mon vecteur dépasse une certaine taille.
Peut t'on rajouter des lignes peut être a ma jtable avant de les remplir ?
j'ai pensé a une seconde solution qui m'a eu l'air plus propre mais je ne sais pas si c'est possible :
ça me renvoi une erreur , déjà peut on opérer comme ça ? en sachant que le tableau a l'ouverture du prog est initialisé avec rien dedans (et non éditable)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 jTable1.setModel(new javax.swing.table.DefaultTableModel( R1.aideAffichage(), // doit renvoyer un Object[][] R1 est l'instance //du zoo new String [] { "Test", "Nom poisson", "id", "blabla" } ) { boolean[] canEdit = new boolean [] { false, false, false, false }; public boolean isCellEditable(int rowIndex, int columnIndex) { return canEdit [columnIndex]; } } );
Si on peut opérer de cette façon le problème doit venir de ma fonction affichage (présent dans la classe zoo R1 étant une instanciation de zoo)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 public Object[][] aideAffichage() { int taille = listedesanimaux.size(); Object[][] tab = new Object[taille][4]; //gros doute !!! for(int i=0;i<taille;i++){ Animal t=listedesanimaux.elementAt(i); tab[i][0]=t.idbis; // juste ça pour le moment pour tester } return tab; }
Peut etre dans cette solution l'erreur vient de l'initialisation du tableau ? ou peut etre est ce impossible d'opérer ainsi :/
Autre question (mais ça j'ai pas vraiment cherché) peut t'on empecher l'utilisateur de bouger les collonnes de la jTable ?
(si j'utilise la première méthode ça plante tout )
Partager