Colorer le contenu d'une cellule d'un JTable

noussa1985 Messages postés 31 Date d'inscription jeudi 14 juin 2007 Statut Membre Dernière intervention 20 avril 2008 - 11 avril 2008 à 00:36
 Utilisateur anonyme - 11 avril 2008 à 07:03
Bonsoir tou le monde,
SVP j'ai besoin de votre aide,
j'ai déja créé un JTable  mais je veux modifier la couleur du contenu d'une cellule  en specifiant le n° de la ligne le n° de la colonne.
 merci pour votre aide

2 réponses

Utilisateur anonyme
11 avril 2008 à 07:00
Bonjour

Tu pourrais quand même farfouiller un peu plus dans les tutoriaux de Sun et dans la documentation Java avant de poser ce genre de questions. Soit tu crées ton propre "renderer" et tu lui passes les coordonnées des cellules et les couleurs à effectuer, dans la méthode getTableCellRenderer(...), tu fais un appel à super.getTableCellRenderer(...) puis tu fais un setBackground(Color c) sur le JLabel que tu récupères; soit tu crées ton composant maison qui contient une chaîne de caractère et ta couleur et tu modifies ton "renderer" dans la même méthode de façon à ce qu'il aille chercher la couleur dans ton nouveau composant pour m'appliquer, ça évite de devoir passer les coordonnées et les couleurs à affecter (c'est plus propre de faire comme ça). N'oublie pas associer à ta table ton nouveau "renderer".

Un exemple :

public final class MyDefaultTableCellRenderer extends DefaultTableCellRenderer{

      final Component getTableCellRenderer(JTable table, Object object , boolean isSelected, boolean hasFocus, int row, int column){
                    JLabel label = super.getTableCellRenderer(table,object,isSelected,hasFocus,row,column);
                    //tous tes objets de ton modèle doivent être des instances de cette classe
                    //sinon tu auras une ClassCastException, ou alors utilise instanceof et prévois un autre cas
                    MyNewClass myObject = (MyNewClass) object;
                    label.setText( myObject.getText() );
                    label.setBackground(myObject.getBackground() );
                    return(label);
      }

}

TUER : http://tuer.tuxfamily.org/tuer.php

yeah! vive java
0
Utilisateur anonyme
11 avril 2008 à 07:03
N'oublie pas ça :

jtable.setDefaultRenderer(MyNewClass.class,new MyDefaultTableCellRenderer());

Ainsi, comme la classe est précisée, pas besoin d'instanceof dans la méthode du post précédent.

TUER : http://tuer.tuxfamily.org/tuer.php

yeah! vive java
0
Rejoignez-nous