0

由于列的值,我正在尝试更改整行的颜色。

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

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

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;
    }
}

在我的测试中,我只包括了三种情况,我希望在默认情况下,我的行由外观提供的默认颜色着色。

我怎样才能做到这一点 ?

4

1 回答 1

2

由于列的值,我正在尝试更改整行的颜色。

  • 看看prepareRenderer

  • 表单中的 DefaultTableCellRenderer 仅适用于单元格,需要使用 TableCellRenderer 中的 int row、int colum 方法将渲染器应用于整行

  • String etat = (String) table.getModel().getValueAt(row, 2);, 使用int modelRow = convertRowIndexToModel(row); ,因为JTables视图可以排序或过滤,那么视图索引与模型索引不匹配,(排序或过滤)视图索引可以过自己的生活

于 2013-06-01T13:46:31.697 回答