Swing - Einstellen der Farbe einer Zelle basierend auf dem Wert einer Zelle

Ich möchte die Farbe einer Zelle basierend auf dem Wert der Zelle festlegen. Nachdem ich ein bisschen gegoogelt habe, habe ich herausgefunden, dass ich es mit so etwas machen kann:

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;
    }
 }

Das Problem, das ich habe, ist, dass der Code, den ich ändern möchte, bereits das TableCellRendererer für die Spalten des JTable einstellt. Der Code enthält eine Funktion, die folgendermaßen aussieht:

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);
        }
    }

Muss ich mit dem obigen Code noch die TableCellRenderer-Klasse hinzufügen, die zuvor angezeigt wurde? Alles, was ich tun möchte, ist zu überprüfen, ob der Wert der Zelle 'ABC' ist und den Hintergrund auf ROT zu setzen.

Aktualisieren:

Ich habe versucht, meine Version des TableCellRenderer als innere Klasse in den Code einzufügen, den ich ändern möchte, aber ich erhalte die Fehlermeldung, dass bei tableColumn.getCellRenderer () ein Typkonflikt vorliegt.

Type mismatch: cannot convert from TableCellRenderer to MyTableExample.TableCellRenderer

Vielen Dank

Antworten auf die Frage(1)

Ihre Antwort auf die Frage