JTable et CellRenderer

Résolu
cs_le_totophe Messages postés 51 Date d'inscription samedi 3 janvier 2004 Statut Membre Dernière intervention 26 mai 2007 - 25 avril 2007 à 12:16
cs_le_totophe Messages postés 51 Date d'inscription samedi 3 janvier 2004 Statut Membre Dernière intervention 26 mai 2007 - 26 avril 2007 à 19:46
Bonjour à tous,

J'utilise pour une de mes tables un Renderer spécifique (la table est une JTable avec le TableSorter de chez Sun) qui logiquement doit m'afficher une ligne en rouge lorsque la 2ème colonne comporte la valeur "2". Que je laisse volontairement sous forme de chaine de caractère.
Voilà le code de mon Renderer:

public class TablePigeRenderer implements TableCellRenderer

{

    public static final DefaultTableCellRenderer DEFAULT_RENDERER = new DefaultTableCellRenderer();

    public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column)

    {

        Component renderer = DEFAULT_RENDERER.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);

        ((JLabel) renderer).setOpaque(true);

        Color monRouge = new Color(248, 164, 171);

        Color background;

        if(!(isSelected))

        {
            if (table.getValueAt(row, 2).toString().compareTo("2") 0) { background monRouge; }

            else { background = Color.WHITE; }

            renderer.setBackground(background);

        }

        return renderer;

    }

}

Le problème est que ma table contient plusieurs colonnes de plusieurs types différents. Pour faire plus simple voici un exemple de données:

Object[][] data = { { new Boolean(false), new ImageIcon("toto.png"), "2", "PHRASE 1-1", new Integer(10000), "PHRASE 2-1"},

                            { new Boolean(true), new ImageIcon("tata.png"), "0", "PHRASE 1-2", new Integer(10000), "PHRASE 2-2"},

                           
{ new Boolean(false), new ImageIcon("titi.png"), "1", "PHRASE 1-3", new Integer(10000), "PHRASE 2-3"} };

Et au-lieu de m'afficher toute la ligne 1 (dans cette exemple) en rouge, seules les cellules de type String sont affichées en rouge.

Si quelqu'un pouvait m'aider à modifier celà ou à le recoder.

Merci d'avance à vous tous

1 réponse

cs_le_totophe Messages postés 51 Date d'inscription samedi 3 janvier 2004 Statut Membre Dernière intervention 26 mai 2007 2
26 avril 2007 à 19:46
Bon, voilà, je me réponds à moi même, c'est juste pour qu'il reste une trace si un jour quelqu'un à le même problème que moi.

En fait, c'est tout simple, il suffit de préciser pour chaque type le renderer que l'on veut.

ex:
jTable1.setDefaultRenderer(Object.class, new monRenderer());
jTable1.setDefaultRenderer(Integer.class, new monRenderer());
...

Voilou
3
Rejoignez-nous