Bonjour à tous !
Alors voilà, j'ai un pitit soucis... J'ai une JTable, qui dépend d'un AbstractTableModel. Dans cette JTable, une seule colonne doit pouvoir être modifiée rapidemment, celle des quantité.
Donc je sais qu'il faut surcharger la fonction "isCellEditable(int row, int column)", ce qui a été fait :
Par ailleurs, j'ai vu sur un site qu'il fallait surcharger une autre méthode afin que le model tienne compte de ces changements :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 public boolean isCellEditable(int row, int col){ return col == 8 ? true : false; //la colonne quantité est en 8ème position }
Le sysout ne sers qu'à vérifier à quel moment cette fonction est appelée.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 public void setValueAt(String object, int row, int column) { System.out.println("SET VALUE AT row : " + row + ", column : " + column); if(column == 8) { this.data[row][column] = object; fireTableCellUpdated(row, column); //je sais pas si ça sert à quelque chose, dans le doute, je l'ai mis } }
Et en fait, elle n'est jamais appelée
Pendant l'exécution, on peut cliquer et modifier le texte, mais au moment de quitter la case (clic ailleurs ou bien "entrée") la cellule revient à son contenu de départ.
Donc voilà, m'a question, comment prendre en compte ces changements ???
Par ailleurs, je vous donne le code de l'AbstractTableModel uniquement, je ne pense pas que les autres classes puissent influencer :
Si vous pouvez m'aider, n'hésitez pas surtout
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
56
57
58
59
60 package vues; import java.text.DecimalFormat; import javax.swing.table.AbstractTableModel; import modeles.articles.variables.Article; public class TableDevis extends AbstractTableModel { private String[][] data; private String[] title; public TableDevis() { this.title = new String[]{"... plusieurs colonnes ... ", "Quantité","... plusieurs colonnes ... "}; this.data = new String[0][this.title.length]; } public int getColumnCount() { return this.title.length; } public int getRowCount() { return this.data.length; } public String getValueAt(int row, int column) { System.out.println("GET VALUE AT row : " + row + ", column : " + column); return this.data[row][column]; } public void setValueAt(String object, int row, int column) { System.out.println("SET VALUE AT row : " + row + ", column : " + column); if(column == 8) { this.data[row][column] = object; fireTableCellUpdated(row, column); } } public boolean isCellEditable(int row, int col){ return col == 8 ? true : false; } public String getColumnName(int col) { return this.title[col]; } public Class<?> getColumnClass(int columnIndex) { return String.class; } //... autre fonctions non surchargées, //ajoutant//supprimant des données à data }
P'is si vous voulez que j'affiche plus de code, prévenez moi
Merci d'avance.
Partager