Salut!!
Je voudrais savoir comment détecter qu'une cellule d'une ligne de ma jtable est vide?
(je veux connaître cette ligne pour la mettre d'une autre couleur)
Merci pour votre aide!!
Version imprimable
Salut!!
Je voudrais savoir comment détecter qu'une cellule d'une ligne de ma jtable est vide?
(je veux connaître cette ligne pour la mettre d'une autre couleur)
Merci pour votre aide!!
Et ben c'est simpe ; utilise un TableCellRenderer
dans la fonction getTableCellRendererComponent(JTable table, Object value... ),
l'objet "value" contient la valeur retournée par le TableModel.
Tu peux donc tester sa valeur...
Salut!!
J'ai utilisé un TableRenderer et ça marche (détection de la cellule vide et coloration).
Le problème est que maintenant que je n'utilise plus le DefaultTableModel j'ai des erreurs au niveau de :
Est ce que quelqu'un sait comment remédier à cela!!Code:
1
2 model.setDataVector() model1.removeRow()
Merci!!
Un peu plus d'info stp, une stacktrace??
J'utilise ce code pour le TableRenderer:
Le problème est que les méthodes que j'ai citées auparavant ne marchent plus et je ne sais pas d'où provient l'erreur!Code:
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
61
62
63
64
65
66
67 class TableRenderer extends DefaultTableCellRenderer { // Cette méthode permet de ' dessiner ' une cellule public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column); if ((String) value == null || ((String) value).equals("")) { this.setBackground( Color.pink ); this.setText( (String)value ); } else { this.setBackground( Color.WHITE ); this.setText( (String)value ); } return this; } } class TableModel extends AbstractTableModel { Vector tableau = new Vector(); Vector cols = new Vector(); public TableModel(Vector tableau, Vector cols) { super(); this.tableau = tableau; this.cols = cols; } // Récupérer le nombre de colonne public int getColumnCount() { return cols.size(); } // Récupérer le nombre de ligne public int getRowCount() { return tableau.size(); } // Titre d'une colonne public String getColumnName(int column) { return (String)cols.get(column); } public Object getValueAt(int rowIndex, int columnIndex) { return ((Vector)tableau.get(rowIndex)).get(columnIndex); } public Class getColumnClass(int columnIndex) { return String.class; } }
aucune idée:cry:
Je viens de répondre sur un autre site. ( surrement à toi lol ). Voilà l'un des code possible qui permet d'obtenir le résultat.
Code:
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 class TableRenderer extends DefaultTableCellRenderer { // Cette méthode permet de ' dessiner ' une cellule public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column); this.setText( (String) value); if ( vide (table,row) ) { this.setBackground( Color.pink ); // this.setText( (String)value ); } else { this.setBackground( Color.WHITE ); // this.setText( (String)value ); } return this; } //rechercher une cellule vide sur la ligne actuelle public boolean vide(JTable table, int row) { for (int i = 0; i < table.getColumnCount(); i++) { if (table.getValueAt(row, i) == null) { return true; } else { if (table.getValueAt(row, i).equals("")) { return true; } } } return false; } }
Je sais mais ma question portait sur les deux méthodes qui ne marchait plus et non sur le TableRenderer!
J'ai essayé fireTableDataChanged() et la mise à jour se fait mais j'ai besoin de savoir comment supprimer les anciennes lignes sinon l'affichage est très encombré.
Merci!!