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 に答える