Cellrenderer 更改单元格背景颜色也更改值格式、对齐方式

Cellrenderer change cell background color also change value format, alignment

我使用 cellRenderer 更改我的单元格(列)背景颜色,但它也会将单元格值格式更改为图像上的左列,我将默认格式保留为图像上的右列,这是我的简单代码:

DefaultTableCellRenderer centerRenderer = new DefaultTableCellRenderer();
centerRenderer.setBackground(Color.ORANGE);
mytable.getColumnModel().getColumn(3).setCellRenderer( centerRenderer );

非常感谢 这是上面描述的图片

最好扩展 Basic TableCellRenderer 以重新添加这些特定样式,因为 basic 将具有最少的样式。

class CustomTableCellRenderer extends BasicTableCellRenderer {

    @Override
    public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus,
            int row, int column) {
        super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);

        // Add style logic here    

        return this;
    }
}

您想创建一个允许您格式化数据的自定义渲染器。

基本逻辑是这样的:

public class IntegerRenderer extends DefaultTableCellRenderer
{
    private Format formatter = new NumberFormage.getIntegerInstance();

    public IntegerRenderer()
    {
        setHorizontalAlignment( SwingConstants.RIGHT );
    }

    public void setValue(Object value)
    {
        //  Format the Object before setting its value in the renderer

        try
        {
            if (value != null)
                value = formatter.format(value);
        }
        catch(IllegalArgumentException e) {}

        super.setValue(value);
    }
}

然后你只需要设置渲染器的背景颜色。

查看 Table Format Renderers 可重复使用 类,make 可以轻松为数字、百分比、日期等创建自定义渲染