Non è necessario, oltre che dispendioso, creare un nuovo renderer ogni volta... Una soluzione semplice è quella di utilizzare un vettore "parallelo" di booleani in cui riporti quale riga colorare... Forse uno snippet è più comprensibile di tante parole:

codice:
Object rowData[] = new Object[nrRow];
 
boolean redColoring[] = new boolean[nrRow];
  
String columnNames[] = new String[nrCol];

JTable table = new JTable(rowData, columnNames);
    
table.setDefaultRenderer(Object.class, new TableCellRenderer() {
    
   @Override
   public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column){
        
        JLabel label = new JLabel(value.toString());
        
        label.setOpaque(true);

        if (redColoring[row]) {
        
          label.setBackground(Color.RED);
        
        }
               
        return label;
               
     }
    
    });
A questo punto ti gestisci il vettore di booleani, alzando e/o abbassando l'elemento (riga i-sima) che vuoi colorare.