Bonjour,
Question simple : Comment créer un objet Vector à 2...n dimensions ?
(comme pour les tableaux array[][]..[][]).
Version imprimable
Bonjour,
Question simple : Comment créer un objet Vector à 2...n dimensions ?
(comme pour les tableaux array[][]..[][]).
Un vecteur dans lequel tu ajouterais des objets Vector par exemple...non?Citation:
Envoyé par FFF
ok,
en fait j'ai fait :
J'ai une erreure :Code:
1
2
3
4
5 Vector<Vector> data=new Vector<Vector>(); Vector<String> nom=new Vector<String>(); Vector<String> prenom=new Vector<String>(); data.add(nom);data.add(prenom); nom.add("toto");prenom.add("lul");
Citation:
Fenetre1.java:20: warning: [serial] serializable class Fenetre1 has no definitio
n of serialVersionUID
public class Fenetre1 extends JPanel {
Ta classe implements serializableCitation:
Envoyé par FFF
Avec java 5 il faut fournir un serialVersionUID
Tu peux donner un coup d'oeil a la faq pour plus d'informations :wink:
ok merci, j'ai pas tout saisi pour serializable, mais ça marche, enfin preque, les ajouts se font par colonne au lieu de se faire par ligne.
comment ajouter une ligne d'un tableau 2D ? Le code de dessus m'ajoute les éléments sur une colonne...
En changeant ta méthode d'affichage ou ta méthode d'ajout d'objet dans le vector (au choix, mais pas les 2 en même temps).
L'ordre colonne/ligne et ligne/colonne n'étant en effet qu'une vue de l'esprit.
En fait c'est un peu plus compliqué que cela puisque j'utilise un JTable, donc l'affichage, c'est pas moi qui décide :
par contre l'ordre de création, j'ai le choix, mais je vois pas comment faire différemment de ce que j'ai écris plus haut !Citation:
JTable
public JTable(Vector rowData,
Vector columnNames)Constructs a JTable to display the values in the Vector of Vectors, rowData, with column names, columnNames. The Vectors contained in rowData should contain the values for that row. In other words, the value of the cell at row 1, column 5 can be obtained with the following code:
((Vector)rowData.elementAt(1)).elementAt(5);
Parameters:
rowData - the data for the new table
columnNames - names of each column
A oui tu t'yprend de travers : dans le cas de la JTable, c'est un vecteur de lignes qu'il faut pas un vecteur de colonnes (chaque ligne contient le nom ET le prenom).
Le résultat devrait etre :Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 Vector<String> columnNames = new Vector<String>(); columnNames.add("Nom"); columnNames.add("Prenom"); // Vector<Vector<String>> rows = new Vector<Vector<String>>(); // Ligne 1. Vector<String> row1 = new Vector<String>(); row1.add("Machin"); row1.add("Toto"); rows.add(row1); // Ligne 2. Vector<String> row2 = new Vector<String>(); row2.add("Dupont"); row2.add("Jean"); rows.add(row2); // Ligne 3. Vector<String> row3 = new Vector<String>(); row3.add("Durant"); row3.add("Hervé"); rows.add(row3); ...
Code:
1
2
3
4
5
6 Nom Prenom ------------------------ Machin Toto Dupont Jean Durant Hervé
ok, ça marche nickel !
Merci Bouye et Benjamin aussi !
en essayant cette méthode sur un programme plus compliqué, je me demande où est la partie, dynamique de ce vector en 2D.
je m'explique :
j'ai crée rows en variable d'instance, que j'envoie à d'autre classes en paramètre, ok.
par contre je ne connais pas le nombre de lignes (rows1,..n) de mon tableau. Du coup lorsque je veux insérer une ligne, il faut créer un objet row1. Mais lorsque je fait cela la ligne n'apparaît pas, "comme si l'objet" row1 s'était enlevé de rows, parce que l'objet est repassé à null. Faut-il faire un update() pour résoudre le problème ?
J'ai pas tout compris mais si tu modifies ton vecteur après la création de ta JTable il faudrait sans doute faire un truc du genre monTableModel.fireTableStructureChanged().
Sinon tu as toutes les méthodes nécessaires à l'ajout/retrait de lignes dans DefaultTableModel
Ca complique pas mal les choses d'utiliser une Jtable(Vector,Vector)...
Je pense utiliser ces méthodes plus tard, pour des cas plus simples... je vais rester pour l'instant sur des Tableaux de taille fixée, c'est nettement plus simple (c'est moins pro mais bon quand je vois excel, il n'utilise sûrement pas des vector !).
Et puis d'un point de vue performance du programme/mémoire, je pense que l'on y gagne en rapidité d'execution en utilisant des tableaux ?!