Mudar a cor da linha de um JTable

Boa noite,

 Visitei vários fóruns e não obtiver um resultado para o meu problema.

Estou precisando mudar um linha por completo caso o Status seja = CA.

Já estou usando uma Classe RendererCustom para centralizar algumas colunas e gostaria que nesta mesma classe pode-se retorna a cor da linha para o JTable.(já que irei usar o mesmo método para outros JTable em outras Classes).

Abaixo segue a Classe RendererCustom:

package ctrlAuxiliaries;

import javax.swing.SwingConstants;
import javax.swing.table.DefaultTableCellRenderer;

public class RendererCustom {
    DefaultTableCellRenderer cellRender = new DefaultTableCellRenderer();
    
    public DefaultTableCellRenderer getAlinhamentoColumn(String tipo){
        
	cellRender.setHorizontalAlignment(getAlinhamentoColum(tipo));
        
        return cellRender;
    }
    
    private int getAlinhamentoColum(String alinhamento){
        
        switch(alinhamento){
            case "centro":
                return SwingConstants.CENTER;
            case "direita":
                return SwingConstants.RIGHT;
            default:
                return SwingConstants.LEFT;
        }
        
    }
    
}

Abaixo segue a Classe **o método para inserir os Clientes**:

private void pnVisualizar() {
        /* Tabela Clientes */
        mdClientes = new DefaultTableModel(new Object[]{
           "ID", "CPF", "NOME", "ESPECIFICAÇÃO", "CEL01", "CEL02", "TEL",
            "BAIRRO", "CIDADE", "UF", "LOGADOURO", "Nº", "COMPLEMENTO", "CEP", "STATUS" 
        },0);
        
        tbClientes = new JTable(mdClientes);
        tbClientes.setAutoResizeMode(0);
                        
        // ID
        tbClientes.getColumnModel().getColumn(0).setPreferredWidth(40);
        tbClientes.getColumnModel().getColumn(0).setResizable(false);
        tbClientes.getColumnModel().getColumn(0).setCellRenderer(
            new RendererCustom().getAlinhamentoColumn("centro")
        );
        
        //CPF
        tbClientes.getColumnModel().getColumn(1).setPreferredWidth(100);
        tbClientes.getColumnModel().getColumn(1).setResizable(false);
        tbClientes.getColumnModel().getColumn(1).setCellRenderer(
            new RendererCustom().getAlinhamentoColumn("centro")
        );
        
        //NOME
        tbClientes.getColumnModel().getColumn(2).setPreferredWidth(300);
        
        //ESPECIFICAÇÃO
        tbClientes.getColumnModel().getColumn(3).setPreferredWidth(105);
        tbClientes.getColumnModel().getColumn(3).setCellRenderer(
            new RendererCustom().getAlinhamentoColumn("centro")
        );
        
        //CEL01
        tbClientes.getColumnModel().getColumn(4).setPreferredWidth(105);
        tbClientes.getColumnModel().getColumn(4).setResizable(false);
        tbClientes.getColumnModel().getColumn(4).setCellRenderer(
            new RendererCustom().getAlinhamentoColumn("centro")
        );
        
        //CEL02
        tbClientes.getColumnModel().getColumn(5).setPreferredWidth(105);
        tbClientes.getColumnModel().getColumn(5).setResizable(false);
        tbClientes.getColumnModel().getColumn(5).setCellRenderer(
            new RendererCustom().getAlinhamentoColumn("centro")
        );
        
        //TEL
        tbClientes.getColumnModel().getColumn(6).setPreferredWidth(105);
        tbClientes.getColumnModel().getColumn(6).setResizable(false);
        tbClientes.getColumnModel().getColumn(6).setCellRenderer(
            new RendererCustom().getAlinhamentoColumn("centro")
        );
        
        //BAIRRO
        tbClientes.getColumnModel().getColumn(7).setPreferredWidth(100);
        
        //CIDADE
        tbClientes.getColumnModel().getColumn(8).setPreferredWidth(120);
        
        //UF
        tbClientes.getColumnModel().getColumn(9).setPreferredWidth(25);
        tbClientes.getColumnModel().getColumn(9).setResizable(false);
        tbClientes.getColumnModel().getColumn(9).setCellRenderer(
            new RendererCustom().getAlinhamentoColumn("centro")
        );
        
        //LOGADOURO
        tbClientes.getColumnModel().getColumn(10).setPreferredWidth(300);
        
        //Nº
        tbClientes.getColumnModel().getColumn(11).setPreferredWidth(35);
        tbClientes.getColumnModel().getColumn(11).setResizable(false);
        tbClientes.getColumnModel().getColumn(11).setCellRenderer(
            new RendererCustom().getAlinhamentoColumn("centro")
        );
        
        //COMPLEMENTO
        tbClientes.getColumnModel().getColumn(12).setPreferredWidth(200);
        
        //CEP
        tbClientes.getColumnModel().getColumn(13).setPreferredWidth(70);
        tbClientes.getColumnModel().getColumn(13).setResizable(false);
        tbClientes.getColumnModel().getColumn(13).setCellRenderer(
            new RendererCustom().getAlinhamentoColumn("centro")
        );
        
        //STATUS
        tbClientes.getColumnModel().getColumn(14).setPreferredWidth(25);
        tbClientes.getColumnModel().getColumn(14).setResizable(false);
        tbClientes.getColumnModel().getColumn(14).setCellRenderer(
            new RendererCustom().getAlinhamentoColumn("centro")
        );
        
        /* inserção das informações */
        
        mdClientes.addRow(new Object[]{
                        "01", "111.111.111-11" , "GIVALDO DA SILVA MEDEIROS NETO",
                        "FAMILIAR", "(84) 9 9999-9999", "", "", "N. PARNAMIRIM", "PARNAMIRIM",
                        "RN", "RUA HELP EM JAVA", "77", "APTO 401", "59000-000", "CA"
                    });
         
        /* fim da inserção das informações */
        
        tbClientes.setRowHeight(30);
        
        spClientes = new JScrollPane(tbClientes);
        spClientes.setBounds(10, 20, 1100, 390);
        spClientes.setViewportView(tbClientes);
              
        pnVisualizar.add(spClientes);
        
        add(pnVisualizar);
    }

Atenciosamente,
Givaldo Neto

Minha classe ColorReader, adivinha… ela pinta tabelas.
Dê detalhes aos comentários descritos nas linhas deste codigo, qualquer duvida sobre o mesmo só pedir.

Boa tarde,

 não deu certo pro que preciso.

por?

Ele modificou minha class RendererCustom.

Neste caso terei que criar uma class só para isso é ?

Seguinte, ela É UMA CLASSE unica de RendererCustom, essa classe que montei possibilita vc pegar os métodos da default e modifica-la para que assim vc utilize-a nas tabelas que desejar.

Na minha classe ColorReader vc consegue pintar linhas, pintas fonte, alterar fontes, deixa-las formatadas da forma que deseja, pintar células únicas, colocar regras para pintar quando tiver determinado valor, e etc.

Se vc quer implementar cor nas suas células, essa e a forma mais fácil, basta um Ctrl+C Ctrl+V, e fazer pequenas mudanças de acordo com sua necessidade.

Ela parece um pouco complicado pois tem bastante linhas de código, mas é bastante simples quando vc para para analisar o que cada linha faz.

Hummm, ok, mais tarde irei testa com ela separada para ver se dar certo.