
Envoyé par
noelann
En ce qui concerne le code je dois le reproduire ici ? Il y a pas un moyen de joindre un fichier par exemple ?
Si, mais c'est préférable de le copier directement dans le message en le mettant entre balises CODE, comme indiqué ici.

Envoyé par
noelann
Ici c'est le fait que j'ai une liste en entrée que ça me bloque.
Si tu as une JTable déjà affichée, il te suffira de changer le modèle :
table.setModel(dataModel);
Sinon il faudra créer là JTable directement à partir des données :
JTable table = new JTable(data, colNames);
ou à partir d'un modèle
JTabel table = new JTable(dataModel);
Pour créer le modèle, il suffit, comme dans le cas de la création de table directement à partir des données, passer les données, exactement pareil :
TableModel dataModel = new DefaultTableModel(data, colNames);
Les paramètres data et colNames sont
- soit des tableaux d'Object
- soit des Vector
Ton souci est que tu as une ArrayList : il faut donc la convertir soit en tableau, soit en Vector. Mais ce qui complique un peu la chose, c'est que tu as une liste de listes. Donc soit créer un tableau de tableaux, soit créer un Vector de Vector.
- Créer un Vector à part d'une List
Un moyen simple de créer un Vector à partir d'une List est simplement d'utiliser son constructeur qui prend une Collection en argument :
Vector vector = new Vector( list ); // ou list est un List
Mais tu ne peux pas faire çà avec ta List de List, parce que tu obtiendrais un Vector de List, et non un Vector de Vector. Il faut aussi donc convertir chaque sous-liste.
Tu peux faire ça dans une simple boucle :
1 2 3 4 5 6
| List<List> listeDeListes = /*...*/; // ou List<ArrayList> peut-être dans ton cas (c'est pour ça que c'est utile de voir ton code pour répondre précisément)
Vector data= new Vector();
for(List sousListe : listeDeListes) {
data.add( new Vector(sousListe) ); // on ajoute à data la conversion de sousListe en Vector
}
// data est un Vector de Vector, donc on peut l'utiliser pour créer la JTable ou son modèle |
- De même, on peut encore plus simplement convertir une List en tableau d'Object :
Object[] tableau = list.toArray();
Pour obtenir un tableau de tableaux d'Object, on fera aussi une boucle. Mais pour créer un tableau, il faut connaître ses dimensions par avance. Le nombre de lignes, c'est facile, c'est le nombre de sous-listes dans la liste, donc la taille de la liste, qu'on obtient par sa méthode size(). Pour chaque ligne, on n'a pas besoin de le faire : comme on va remplir le tableau par une boucle, chaque ligne sera dimensionnée par la taille du tableau de chaque ligne. Mais comme on est obligé de donner une taille, on va dire que c'est 0 en attendant.
1 2 3 4 5 6
| List<List> listeDeListes = /*...*/; // ou List<ArrayList> peut-être dans ton cas (c'est pour ça que c'est utile de voir ton code pour répondre précisément)
Object[][] data= new Object[listDeListes.size()][0]; // on créer le tableau avec les bonnes tailles comme je viens d'écrire
for(int i=0; i<listDeListes.size(); i++) {
data[i] = listeDeListes.get(i).toArray(); // on met dans data[i] la conversion de la sousListe en position i dans listeDeListe sousListe en tableau
}
// data est un tableau de tableaux, donc on peut l'utiliser pour créer la JTable ou son modèle |
Il existe d'autres moyens pour faire ces conversions, mais moins abordables pour un débutant. Pour l'instant, je pense que ça te suffira.
Partager