为 JXTable 中的一些行着色
Coloring some rows in 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 行颜色为红色)
但是在对某些列进行排序后,该行索引没有改变。(第 1、2 和 15 行再次变为红色)
如何解决?
double d = (double) getModel().getValueAt(row, 4);
模型中的数据从未排序,因此您需要使用:
double d = (double) getModel().getValueAt(modelRow, 4);
我在对列重新排序后为某些行着色时遇到问题。 我想为第 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 行再次变为红色)
double d = (double) getModel().getValueAt(row, 4);
模型中的数据从未排序,因此您需要使用:
double d = (double) getModel().getValueAt(modelRow, 4);