改变JTable中一行的颜色

时间:2013-06-01 12:04:22

标签: java swing jtable tablecellrenderer

我正在尝试根据列的值更改整行的颜色。

我测试它的值的列是我表中的第三列。

这是我的单元格渲染类代码:

public class CustomTableCellRenderer extends DefaultTableCellRenderer {
    public Component getTableCellRendererComponent(JTable table,
            Object obj, boolean isSelected, boolean hasFocus, int row, int column) {
        Component cell = super.getTableCellRendererComponent(
                table, obj, isSelected, hasFocus, row, column);

        String etat = (String) table.getModel().getValueAt(row, 2);
        switch (etat) {
            case "Annulé":
                cell.setBackground(Color.RED);
                break;
            case "Traitement":
                cell.setBackground(Color.yellow);
                break;
            case "Livré":
                cell.setBackground(Color.GREEN);
                break;
            default : 
                // Here I want to change the color to the default color
        }
        return cell;
    }
}

在我的测试中我只包括三种情况,我希望在默认情况下我的行用默认颜色着色,默认颜色由外观&感觉。

我该怎么做?

1 个答案:

答案 0 :(得分:2)

  

我正在尝试根据列的值更改整行的颜色。

  • 查看prepareRenderer

  • 表单中的DefaultTableCellRenderer仅适用于单元格,需要使用方法int row,来自TableCellRenderer的int colum

  • 将渲染器应用于整行
  • String etat = (String) table.getModel().getValueAt(row, 2);,使用int modelRow = convertRowIndexToModel(row);,因为JTables视图可以被排序或过滤,然后视图索引与模型索引不匹配,(排序或过滤)视图索引可以生活自己的生活