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

时间:2019-01-15 08:55:30

标签: java swing colors jtable tablecellrenderer

我使用cellRenderer更改单元格(列)的背景颜色,但是它也使单元格值格式更改为图像上的LEFT列,我将默认格式保留为图像上的RIGHT列,这里是我的简单代码:< / p>

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

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

enter image description here

2 个答案:

答案 0 :(得分:0)

最好扩展BasicTableCellRenderer以重新添加这些特定样式,因为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;
    }
}

答案 1 :(得分:0)

您要创建一个自定义渲染器,以允许您格式化数据。

基本逻辑如下:

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中可重用的类,这些类使创建数字,百分比,日期等的自定义渲染变得容易。