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