JTable中列中的颜色单元格

时间:2012-03-03 17:24:51

标签: java swing jtable

我目前有一个由7列和多行数据组成的JTable。

我如何为第7列中的每个细胞着色?我想根据单元格内的数据进行着色。

因此,如果第7列中的一个单元格低于0,那么我想要显示红色,或者如果第7列中的一个单元格大于0,则为绿色等。

谢谢

2 个答案:

答案 0 :(得分:4)

您可以使用TableCellRenderer为表中的单个单元格创建这些自定义样式。这个tutorial详细解释了。在该页面上是一个使用颜色渲染器的示例,它可能是您需要的开始。

答案 1 :(得分:2)

初始化表对象时覆盖prepareRenderer()方法,将特定条件相应地更改颜色,然后颜色更改将按照您的定义反映在应用程序中。假设您有一个全局JTable变量table并让model成为您的DefaultTableModel实例:

table = new JTable( model )
{
    public Component prepareRenderer ( TableCellRenderer r, int row, int col )
    {
        Component comp = super.prepareRenderer( r, row, col );
        if ( col == 6 && !isCellSelected( row, col ) )
        {
            if ( table.getValueAt( row, col ) < 0 )
                comp.setBackground( Color.RED );
            else
               comp.setBackground( Color.GREEN );
        }  
        return comp;
    }
};

上面的代码检查col == 6,因为你想要着色第7列,它对应于列索引6(从0开始)。在内部if语句中,它正在检查单元格值并相应地更改单元格背景颜色。