JTable et CellRenderer [Résolu]

Signaler
Messages postés
21
Date d'inscription
mercredi 21 novembre 2007
Statut
Membre
Dernière intervention
18 décembre 2009
-
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
-
Bonjour à tous!

Voilà le contexte: j'essaie de reproduire sur un JTable le fonctionnement de Jtree(je crois... enfin une représentation en arbre ^^). Ne me demandez pas pourquoi, ce n'est pas l'objet de ce post.

Pour ce faire, la première colonne de mon tableau est de type Boolean et reprèsente le petit plus ou le petit moins pour déployer les ligne du tableau ou les cacher (C'est ce comportement qui est comparable à celui d'un arbre).

J'ai donc édité un nouveau cellrenderer pour virer la représentation par défaut du boolean, à savoir, une checkbox pour la remplacer par des images (celles d'un plus et celle d'un moins)

voici le code:

 public class MaskRenderer extends DefaultTableCellRenderer
{
    private ImageIcon plus = new ImageIcon("icons/list-add.png");
    private ImageIcon moins = new ImageIcon("icons/list-remove.png");
   
    public Component getTableCellRendererComponent(JTable table, Object value,
            boolean isSelected, boolean hasFocus, int row, int column)
    {       
        Boolean bool = (Boolean)value;
        setIcon(bool.booleanValue() ? plus : moins);
        return this;
    }
}

ça fonctionne presque mais j'ai un problème:
Lorsque je click sur mon plus (ou le moins), la checkbox apparait de nous jusqu'a ce que je relache le click.

Il manque manifestement quelque mais quoi?
Peut être qu'il me faut aussi toucher au cellEditor, chose que je n'est pas faite.
Une Idée???

1 réponse

Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
102
Salut,

C'est cà : le cellRenderer sert à formater l'afficher des données, par contre, dès que la cellule est en mode édition (lors d'un clic par exemple), c'est le cellEditor qui est affiché !