我目前有一个由7列和多行数据组成的JTable。
我如何为第7列中的每个细胞着色?我想根据单元格内的数据进行着色。
因此,如果第7列中的一个单元格低于0,那么我想要显示红色,或者如果第7列中的一个单元格大于0,则为绿色等。
谢谢
答案 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语句中,它正在检查单元格值并相应地更改单元格背景颜色。