Я уже много читал о CellRendering в Java, а также посетил другие вопросы и ответы с этого замечательного сайта.К сожалению, я до сих пор не нашел решение для следующей проблемы:
Я хочу отобразить JTable, который отображает StatusEvents - это необходимо для мониторинга работающей Системы.Однако эти StatusEvents состоят из метки времени, текста и цвета.
Моя цель - включить несколько цветных рядов.Чтобы достичь этого, я уже определил новый подкласс JTable (перегрузка) getCellRenderer, связанный со строкой, которая рисуется во время процесса вставки), и новый подкласс TableCellRenderer-Subclass, который применяет цвет к ячейке.
Методы выглядят следующим образом:
MyCustomJTable:
@Override
public TableCellRenderer getCellRenderer(int row, int column) {
TableCellRenderer result = super.getCellRenderer(row, column);
if ( row == 0 )
{
result = colcr;
}
return result;
}
colcr - это мой пользовательский CellRenderer, который окрашивает ячейку в определенный цвет, который устанавливается ранее.
Новый Cell Renderer выглядит следующим образом:
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;
}
К сожалению, текущее решение окрашивает только первую строку в последний настроенный цвет, но ранее окрашенные строки теряют свой цвет и форматируются по умолчанию.
Какие у меня есть возможности, чтобы избежать такого поведения?
искренне
Маркус