java 如何设置行的颜色和向单元格添加图像

laawzig2  于 2022-12-28  发布在  Java
关注(0)|答案(1)|浏览(123)

我想改变行的颜色,所以我创建自己的单元格渲染器:

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

    if (row % 2 == 1) {
        setBackground(new Color(245, 245, 245));
    }
    if (row % 2 == 0) {
        setBackground(Color.white);
    }

    setHorizontalAlignment(JLabel.CENTER);
    return super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
}

这工作正常,直到我想添加图像到单元格,所以我重写方法中的表:

@Override
    public Class getColumnClass(int column) {
        if (column == 4) {
            return ImageIcon.class;
        }
        return Object.class;
    }

现在第四列仍然是白色,颜色没有改变。
我如何才能同时实现所有这些东西?
谢谢你的建议

lbsnaicq

lbsnaicq1#

我想更改行的颜色
通过重写JTableprepareRender(...)方法,可以自定义整行的呈现,而无需提供自定义呈现器。
基本的逻辑是这样的:

JTable table = new JTable( model )
{
    public Component prepareRenderer(TableCellRenderer renderer, int row, int column)
    {
        Component c = super.prepareRenderer(renderer, row, column);

        //  Alternate row color

        if (!isRowSelected(row))
            c.setBackground(row % 2 == 0 ? getBackground() : Color.LIGHT_GRAY);

        return c;
    }
};

查看Table Row Rendering以获取更多信息和工作示例。
注意,您仍然需要覆盖getColumnClass()方法来显示您的Icon

相关问题