Bonsoir à tous,
Le tutoriel de Thierry LERICHE-DESSIRIER m'a beaucoup intéressé concernant la colorisation d'une colonne d'une Jtable.
J'ai une application qui comprend une Jtable reliée à une base de données, aussi j'aimerais colorer les lignes d'une colonne en fonction de la valeur contenue dans celle-ci...
Ma Jtable qui est reliée à la base de données se nomme masterTable.
J'ai donc crée une classe à l'aide du tutoriel qui est la suivante :
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
| public class jTableCouleurs extends DefaultTableCellRenderer {
@Override
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
table.getColumnModel().getColumn(6).setCellRenderer(this);
super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
String Dategestion = (String) value;
if (Dategestion == null) {
setBackground(Color.red);
} else {
setBackground(Color.green);
}
return this;
}
} |
A partir d'une autre classe, j'appelle cette classe me permettant de colorier les lignes d'une colonne en fonction de sa valeur..
masterTable.setDefaultRenderer(Object.class, new jTableCouleurs());
Lorsque je lance mon application ( sous Netbeans ), j'ai bien la colonne concernée qui se colore en fonction de sa valeur...mais j'ai en plus la première colonne qui se colorie ainsi que la numéro 3 et 4 ( il y a 6 colonne en tout dans ma table..)
J'ai du mal à comprendre pourquoi les trois autres colonne se colorient également.
Après réflexions et essais de compréhension, je constate qu'il me colore les colonnes une, trois, et quatre en fonction de la valeur contenue dans celles -ci. Les couleurs correspondent bien à rouge dans ces colonnes si elle sont vide et inverse en vert si elle sont remplis..
Mais à aucun moment dans mon code indiqué au dessus je mentionne le coloriage d'une ou d'autres colonnes...
Il y bien " getColumn(6) " d'indiqué.....les autres colonnes ne m’intéressant pas...
J'ai du mal à comprendre..
Merci d'avance pour votre aide ou me donner une piste éventuellement..
A+
Partager