Bonsoir
J'aurai au moins une question sur les JTables.
En fait j'ai fait un tableau avec une colonne date et 2 autres pour la température.
J'ai du redéfinir le format d'affichage de la première colonne pour avoir un affichage du style xx/xx/xxxx en utilisant extends DefaultTableCellRenderer
Les deux autres colonnes ne posent pas de souci particulier puisque ce sont des doubles
J'ai voulu m'amuser et j'ai colorié 1 ligne sur 2. C'est là où ma question arrive
Je suis obligé d'avoir le même code dans mon affichage de date et dans mon affichage par défaut des cellules ce que je trouve inefficace.
Une idée de comment palier le problème ?
Cellule par défaut :
Cellule pour les dates :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 public class FondCellRenderer extends DefaultTableCellRenderer { @Override public Component getTableCellRendererComponent(JTable tableau, Object value, boolean isSelected, boolean hasFocus, int row, int column) { super.getTableCellRendererComponent(tableau, value, isSelected, hasFocus, row, column); if((row % 2) == 1) setBackground(Color.YELLOW); else setBackground(Color.WHITE); return this; } }
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 public class AffichageDateCelleRenderer extends DefaultTableCellRenderer { @Override public Component getTableCellRendererComponent(JTable tableau, Object value, boolean isSelected, boolean hasFocus, int row, int column) { super.getTableCellRendererComponent(tableau, value, isSelected, hasFocus, row, column); Calendar maintenant = (Calendar) value; int jour = maintenant.get(Calendar.DAY_OF_MONTH); int mois = maintenant.get(Calendar.MONTH); int annee = maintenant.get(Calendar.YEAR); String affichage = ((jour < 10)?"0":"") + jour + "/" + ((mois < 10)?"0":"") + mois + "/" + annee; setText(affichage); if((row % 2) == 1) setBackground(Color.YELLOW); else setBackground(Color.WHITE); return this; } }
Partager