我想改变行的颜色,所以我创建自己的单元格渲染器:
@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;
}
现在第四列仍然是白色,颜色没有改变。
我如何才能同时实现所有这些东西?
谢谢你的建议
1条答案
按热度按时间lbsnaicq1#
我想更改行的颜色
通过重写
JTable
的prepareRender(...)
方法,可以自定义整行的呈现,而无需提供自定义呈现器。基本的逻辑是这样的:
查看Table Row Rendering以获取更多信息和工作示例。
注意,您仍然需要覆盖
getColumnClass()
方法来显示您的Icon
。