Странно, что я установил свой рендерер ячеек 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", все поля String работают нормально.
А потом я добавляю еще одну строку:
setDefaultRenderer(BigDecimal.class, new MyTableRenderer());
Тогда все просто отлично работает.
Почему это так?