我已经阅读了很多有关 Java 中的 CellRendering 的内容,并且还访问了这个优秀网站的其他问答。不幸的是我仍然没有找到以下问题的解决方案:
我想渲染一个显示 StatusEvents 的 JTable - 这对于监视正在运行的系统是必要的。然而,这些 StatusEvents 由时间戳、文本和颜色组成。
我的目标是启用多个彩色行。为了实现这一点,我已经定义了一个新的 JTable 子类(重载“与插入过程中正在绘制的行相关的 getCellRenderer”)和一个新的 TableCellRenderer 子类,它将颜色应用于单元格。
这些方法如下所示:
我的自定义表:
@Override
public TableCellRenderer getCellRenderer(int row, int column) {
TableCellRenderer result = super.getCellRenderer(row, column);
if ( row == 0 )
{
result = colcr;
}
return result;
}
color 是我的自定义单元格渲染器,它以之前设置的特定颜色为单元格着色。
新的单元格渲染器如下所示:
public class ColorCellRenderer extends DefaultTableCellRenderer {
ColorCellRenderer ( )
{
this.m_Color = null;
}
@Override
public Component getTableCellRendererComponent ( JTable table , Object value , boolean isSelected ,
boolean hasFocus, int row, int column)
{
Component c = super.getTableCellRendererComponent
(table, value, isSelected, hasFocus, row, column);
if ( m_Color != null )
{
if ( row == 0 && column == 0)
{
c.setForeground(m_Color);
}
}
return c;
}
public void setColor ( Color c )
{
this.m_Color = c;
}
private Color m_Color;
}
不幸的是,当前的解决方案仅以最新配置的颜色对第一行进行着色,但先前着色的行会失去其颜色并默认格式化。
我必须避免这种行为的可能性有哪些?
真挚地
Markus