我正在尝试根据列的值更改整行的颜色。
我测试它的值的列是我表中的第三列。
这是我的单元格渲染类代码:
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;
}
}
在我的测试中我只包括三种情况,我希望在默认情况下我的行用默认颜色着色,默认颜色由外观&感觉。
我该怎么做?
答案 0 :(得分:2)
我正在尝试根据列的值更改整行的颜色。
表单中的DefaultTableCellRenderer仅适用于单元格,需要使用方法int row,来自TableCellRenderer的int colum
String etat = (String) table.getModel().getValueAt(row, 2);
,使用int modelRow = convertRowIndexToModel(row);,因为JTables视图可以被排序或过滤,然后视图索引与模型索引不匹配,(排序或过滤)视图索引可以生活自己的生活