0

我遇到的问题是,当我选择一行时,具有自定义单元格渲染器的单元格不会突出显示该单元格,而是突出显示其他单元格。

public Component getTableCellRendererComponent(
    JTable table,
    Object value,
    boolean isSelected,
    boolean hasFocus,
    int row,
    int column)
{
    setFont(ApplicationStyles.TABLE_FONT);

    if (value != null)
    {
        BigDecimal decimalValue = toBigDecimal(value);
        decimalValue =
            decimalValue.setScale(2, BigDecimal.ROUND_HALF_EVEN);

        DecimalFormat formatter = new DecimalFormat("$##,##0.00");
        formatter.setMinimumFractionDigits(2);
        formatter.setMinimumFractionDigits(2);
        String formattedValue = formatter.format(value);
        setText(formattedValue);
    }
    return this;
}
4

2 回答 2

4

您的渲染器应该相应地检查isSelected和调节Component 颜色。概括地说,

@Override
public Component getTableCellRendererComponent(
    JTable table, Object value, boolean isSelected,
    boolean hasFocus, int row, int col) {
    …
    if (isSelected) {
        setForeground(getSelectionForeground());
        setBackground(getSelectionBackground());
    } else {
        setForeground(getForeground());
        setBackground(getBackground());
    }
    return this;
}
于 2015-08-30T22:24:08.227 回答
2

格式化数据的最简单方法是覆盖默认渲染器的方法,如使用自定义渲染器setValue(...)的 Swing 教程中所示。然后你不必担心突出显示。

或者也许更容易使用表格格式渲染器,然后您需要提供的只是Format渲染器使用的。

于 2015-08-31T01:48:59.517 回答