[RESOLVIDO]Preciso de ajuda com Table Cell Renderer

Eae pessoal, eu implementei um Table Cell Renderer no meu código para ele pintar as linhas de acordo com uma condição, eu consegui e ele esta pintando perfeitamente, mas ele pinta toda a linha e eu quero que ele pinte só somente a linha de uma coluna, mas não sei como eu faço isso, se alguém puder me ajudar agradeço!!!

Tabela

OBS: pintar somente na coluna Status

Segue o código do Table Cell Renderer:

class TableRenderer extends DefaultTableCellRenderer {
    @Override
    public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
        BeansTelaPrincipal bt =((TableTelaPrincipal) table.getModel()).getBeansTelaPrincipal(row);
        JLabel c = (JLabel) super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
        c.setOpaque(true);
        
        Color azul = new Color(135, 206, 250);
        Color amarelo = new Color(238, 221, 130);
        Color vermelho = new Color(255, 69, 0 );
        
        if(bt.getStatus().equals("Locado")){
            c.setBackground(azul);
        } else if (bt.getStatus().equals("Aguardando Retirada")){
            c.setBackground(amarelo);
        } else if (bt.getStatus().equals("Manutenção")){
            c.setBackground(vermelho);
        }
        
        return c; }}

Desde já agradeço! :slight_smile:

Faz tempo que não mexo com swing mas num róla verificar se o parâmetro column é a coluna que você quer pintar não?

1 curtida

É bem simples, o renderer te passa a linha e a coluna que está percorrendo, basta usar um simples IF:

if(row == 0 && column == 2){
   // Pinte a linha
}
1 curtida

Consegui, escrevendo seu código:

if(row == 0 && column == 2){
   // Pinte a linha
}

a tabela ficou assim:

Ai eu implementei mais esse else if:

 else if(column != 4){
    c.setBackground(cinza);
 }

e finalmente ficou assim:

Obrigado por todos que responderam!!!