2

在对列进行排序后,我在为某些行着色时遇到问题。我想为第 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 行颜色为红色) 在此处输入图像描述

但是在对某些列进行排序后,此行索引不会改变。(第 1、第 2 和第 15 行再次变红) 在此处输入图像描述 如何解决?

4

1 回答 1

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

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

double d = (double) getModel().getValueAt(modelRow, 4);
于 2015-04-25T18:24:28.573 回答