Bonjour à tous,
comment peut-on ajouter une ligne à un composant JTable
j'ai recherché un peu partout sur le net la solution à mon pb mais je n'ai rien trouvé.
Faut-il reconstruire une nouvelle JTable à chaque ajout?
Bonjour à tous,
comment peut-on ajouter une ligne à un composant JTable
j'ai recherché un peu partout sur le net la solution à mon pb mais je n'ai rien trouvé.
Faut-il reconstruire une nouvelle JTable à chaque ajout?
Salut,
Il faut utiliser un TableModel dont tu modifie le contenu...
a++
En faisant une recherche sur le forum tu trouveras rapidement des elements de reponse ...
enfin, bienvenue a toi sur le forum
Voici mon code:Envoyé par adiGuba
(c'est une classe interne)
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
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55 class TabModele extends AbstractTableModel { Object donnees[][]; String colonnes[]; public TabModele(Object donnees[][], String colonnes[]) { this.donnees=donnees; this.colonnes=colonnes; } public int getColumnCount() { return donnees[0].length; } public Object getValueAt(int parm1,int parm2) { return donnees[parm1][parm2]; } public void setValueAt(Object aValue, int rowIndex, int columnIndex) { } public int getRowCount() { return donnees.length; } public String getColumnName(int col) { return colonnes[col]; } public Class getColumnClass(int c) { switch(c){ case 0 : return String.class; case 1: case 2: return Integer.class; case 3: case 4: return String.class; case 5: return Integer.class; case 6: case 7: return String.class; case 8: return Integer.class; case 9: case 10: return String.class; } return getValueAt(0,c).getClass(); } public boolean isCellEditable(int row,int col) { return true; //toutes les cellules éditables } }
puis:
Quoi modifier dans la tablemodel?
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
23
24
25
26 String[] columnNames={ "Diplôme", "Nip", "Ine", "Nom", "Prénom", "Date de naissance", "Adresse", "Ville", "Code postal", "Téléphone", "E-mail", "Section"}; Object[][] data={ {"Maitrise", new Integer(10), new Integer(10), "rtreter", "erttert", new Integer(8), "fsgfd","fdg",new Integer(5),new Boolean(true),"retertret@caramail.com","Droit"}, {"Licence", new Integer(10), new Integer(10), "fdgdfg", "fgdfg", new Integer(8), "dfgdfg","dfgdf",new Integer(5),new Boolean(true),"retertre@club-internet.fr","Géologie"}, {"Deug", new Integer(10), new Integer(10), "dfgdfgdfgdf", "dfgdfgdf", new Integer(8), "dfgdf","dfgdf",new Integer(5),new Boolean(true),"ertret@hotmail.com","Japonais"}, {"DEA", new Integer(10), new Integer(10), "dfgdfgdfg", "dfgdfg", new Integer(8), "dfgdf","dfgdfg",new Integer(5),new Boolean(true),"ertretr@yahoo.fr.com","Vente"}, {"DESS", new Integer(10), new Integer(10), "dfgdfgfd", "dfgdfgd", new Integer(8), "dfgdfg","dfgfdg",new Integer(5),new Boolean(true),"retret@yahoo.com","Sport"}, {"DEA", new Integer(10), new Integer(10), "dfgdfg", "dfgdfg", new Integer(8), "dfgdf","dfgdfg",new Integer(5),new Boolean(true),"retre@yahoo.fr","Vente"}}; tm=new TabModele(data,columnNames); tabDiplome=new JTable(tm); spDiplome=new JScrollPane(tabDiplome);
@sylvain_2020: merci. g déjà cherché avant. (forum, google)
je trouve bien des méthodes qui m'indique quand il y a une modification, mais rien sur comment modifier....
Est ce qu'il faut recréer les 2 tableaux: Object donnees[][] String colonnes[]
Si tu veux pourvoir modifier le nombre de ligne, il vaut mieux utiliser une List plutot qu'un tableau à deux dimension parce que l'ajout de ligne dans un tableau est plutot chiant à gérer...
Tu peux utiliser une liste qui contient des tableau qui représente une ligne...
Ensuite, il te suffit danc de faire un méthode addLigne() dans ton model, qui rajoute une ligne dans ton objet donnees. ensuite il te suffit d'utiliser la méthode fireTableRowsInserted() d'AbstractTableModel pour prévenir la JTable du changement...
Par exemple :
a++
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 public void addLigne (Object[] ligne) { // Ajout de ligne dans le tableau donnees // index recoit l'index de cette nouvelle ligne fireTableRowsInserted ( index, index ); }
thx adiGuba c ça marche
attention cependant, le vetor doit être déclaré ainsi:
sinon on a droit un warning du compilateur à chaque appel de la méthode "add" de Vector.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Vector<Object[]> donnees=new Vector<Object[]>();
par contre j'ai essayer d'ajouter une ligne vierge (avec toutes les cellules vides) en initialisant les éléments du tableau représentant la ligne à null mais ça ne marche pas
Mais bon comme mon but n'est pas d'ajouter des lignes vides....
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager