Coloration de certaines lignes jTable
Bonjour,
Apres avoir lu plusieurs explications sur le sujet, je ne suis pas parvenu a mettre en place une solution efficace pour répondre à mon besoin.
Je créé un tableau avec jTable par l'interface graphique du netbeans. Je le remplis grace à un vecteur qui lit les informations depuis une base de données.
Parmis les informations, il y a une variable "Etat" pouvant prendre les valeurs "Oui" ou "Non".
Ce que je souhaite faire est simple dans l'idée, c'est requeter la base de données (dison un select * from ma_table) et inséréer les valeurs dans le jTable.
Dès que la colonne "Etat" du tuple courant est à "Oui", je souhaite colorer le background de la ligne en Vert, si c'est à "Non", le colorer en rouge.
J'ai pu lire qu'il fallait modifier le CellRenderer, mais sans grand succès quant à se mise en application dans mon soft. Pourriez vous m'aider à construire ce bout de code ?
Merci par avance.
Ci joint, les quelques lignes de remplissage de ma jTable:
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
|
public void rempliTableau()
{
clearTable();
Vector row = null;
Vector table = new Vector();
String sRequete = "";
GestionBD base=null; // Connexion à la base de données
ResultSet res; // "res" permet de récupérer le résultat des requetes
sRequete = "SELECT * FROM ma_table";
try{
base=new GestionBD("","");
base.requeteSelect(sRequete);
res = base.getRS();
while(res.next())
{
row = new Vector();
row.add(res.getString("champs_1"));
row.add(res.getString("champs_2"));
row.add(res.getString("champs_3"));
if( res.getString("Etat").compareTo("Oui") == 0 )
{
BACKGROUND DE LA LIGNE COURANTE EN VERT
}
else
{
BACKGROUND DE LA LIGNE COURANTE EN ROUGE
}
table.add(row);
}
base.close();
}
// Récupération des éventuelles erreurs
catch (Exception e){ /*...*/ }
finally { /* ... */ }
// Remplissage d'une table temporaire avec les données
_model.setDataVector(table,columnNames);
// Application à la jTable
jTable1.setModel(_model);
} |
Comment customizer un tableau
Primo faut savoir que les tableaux sont des composants compliqués et qui offre peu pour la customisation.
La première chose à faire pour s'en sortir et de redessiner le diagramme de classe des JTable, avec les responsabilités (c'est ticky).
Ensuite à ton JTable tu construis à la main un TableModel qui utilise ton ResultSet.
Il te reste à créer un CellRenderer, mais ce dernier fonctionne que Cellule par cellule, il faut donc que tu interroges ton model pour connaitre la couleur de ta cellule sur ta ligne.
Bon courage.