在JXTable中着色一些行

时间:2015-04-25 18:17:28

标签: java swing jxtable

我在使用列后对某些行进行着色时出现问题。 我想着色第4列等于零的每一行。所以我已经覆盖了这样的prepareRenderer()方法:

public Component prepareRenderer(TableCellRenderer renderer, int row, int column) {
    Component comp = super.prepareRenderer(renderer, row, column);
    int modelRow = convertRowIndexToModel(row);
    int modelColumn = convertColumnIndexToModel(column);
    double d = (double) getModel().getValueAt(row, 4);
    if(d <= 1e-4){
        comp.setForeground(Color.RED);
    }else{
        comp.setForeground(Color.BLACK);
    }
    return comp;
}

它工作正常。 (第1,第2和第15行着色为红色) enter image description here

但是在对某些列进行排序之后,这个行索引不会改变。(第1行,第2行和第15行再次变红) enter image description here 怎么解决?

1 个答案:

答案 0 :(得分:4)

double d = (double) getModel().getValueAt(row, 4);

模型中的数据永远不会排序,因此您需要使用:

double d = (double) getModel().getValueAt(modelRow, 4);