Swing - Definir a cor de uma célula com base no valor de uma célula
Gostaria de definir a cor de uma célula com base no valor da célula. Tendo procurado um pouco, descobri que posso fazer algo assim:
public class TableCellRenderer extends DefaultTableCellRenderer {
@Override
public Component getTableCellRendererComponent(
JTable table, Object value,
boolean isSelected, boolean hasFocus,
int row, int col)
{
// get the DefaultCellRenderer to give you the basic component
Component c = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, col);
// apply your rules
if (value.toString().equals("Red"))
c.setBackground(Color.RED);
else
c.setBackground(Color.GRAY);
return c;
}
}
O problema que tenho é que o código que gostaria de modificar já está definindo o TableCellRendererer para as colunas do JTable. Existe uma função no código que se parece com isso:
private void configureTableColumns() {
Enumeration columns = this.table.getColumnModel().getColumns();
while (columns.hasMoreElements()) {
TableColumn tableColumn = (TableColumn) columns.nextElement();
this.setCellRenderer(tableColumn);
TableCellRenderer renderer = tableColumn.getCellRenderer();
if (renderer == null) {
renderer = this.table.getDefaultRenderer(Object.class);
}
tableColumn.setCellRenderer(renderer);
this.setCellEditor(tableColumn);
}
}
Com o código acima, ainda preciso adicionar a classe TableCellRenderer mostrada anteriormente? Tudo o que eu quero fazer é verificar se o valor da célula é 'ABC' e definir o plano de fundo para RED.
Atualizar:Eu tentei adicionar minha versão do TableCellRenderer como uma classe interna no código que eu quero modificar, mas eu recebo um erro que há uma incompatibilidade de tipo em tableColumn.getCellRenderer ().
Type mismatch: cannot convert from TableCellRenderer to MyTableExample.TableCellRenderer
obrigado