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」タイプの列は適用されませんでした。他の文字列フィールドはすべて正常に機能しています。
次に、もう 1 行追加します。
setDefaultRenderer(BigDecimal.class, new MyTableRenderer());
その後、すべてが正常に機能します。なぜこのようになっているのですか?