【发布时间】:2020-01-20 21:42:35
【问题描述】:
我有一个 JTable 和一个自定义的 cell renderer,如果在线上有新章节,则可以突出显示单元格。
DefaultTableCellRenderer :
static class CustomRenderer extends DefaultTableCellRenderer {
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
Component cellComponent = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
double valueAt = (double) table.getValueAt(row, column);
double compareValue = (double) table.getValueAt(row, column - 1);
if (compareValue < valueAt) {
cellComponent.setBackground(Color.green);
} else {
Component tableCellRendererComponent = super.getTableCellRendererComponent(table, compareValue, isSelected, hasFocus, row, column - 1);
// Component tableCellRendererComponent = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column - 1);
// Component tableCellRendererComponent = super.getTableCellRendererComponent(table, valueAt, isSelected, hasFocus, row, column - 1);
Color background = tableCellRendererComponent.getBackground();
cellComponent.setBackground(background);
}
return cellComponent;
}
}
表模型:
private String[] columnsGetNewest = {"Current Chapter", "Chapter Online"};
private DefaultTableModel dataModelGetNewest = new DefaultTableModel(columnsGetNewest, 0);
它的应用:
tableGetNewest.setModel(dataModelGetNewest);
TableColumn column = tableGetNewest.getColumnModel().getColumn(1);
column.setCellRenderer(new CustomRenderer());
期望的结果:
但由于某种原因,它不能按预期工作:
代码在进入 else 分支时似乎可以工作。
如果我注释掉//cellComponent.setBackground(Color.green);,结果如下:
我的代码有什么问题?我怎样才能得到想要的结果?
【问题讨论】:
标签: java swing jtable tablecellrenderer custom-renderer