奇怪的是,我这样设置 JTable 单元格渲染器:
setDefaultRenderer(Object.class, new MyTableRenderer());
我的表格渲染器是这样工作的:
class MyTableRenderer extends DefaultTableCellRenderer {
public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int column) {
Component comp = super.getTableCellRendererComponent(table, value,
isSelected, hasFocus, row, column);
Font font = comp.getFont();
if (table.getModel().getValueAt(row, 0).equals(BUY)) {
comp.setFont(font.deriveFont(Font.BOLD));
comp.setForeground(BUY_COLOR);
}
else {
comp.setFont(font.deriveFont(Font.BOLD));
comp.setForeground(SELL_COLOR);
}
return comp;
}
}
但事实证明,它没有应用那些类型为“BigDecimal”的列,其他字符串字段都工作正常。
然后,我再添加一行:
setDefaultRenderer(BigDecimal.class, new MyTableRenderer());
然后一切正常。为什么会这样?