[Resolvido] Como alterar cor da fonte e borda de uma célula x,y em jTable

2 respostas
B

Olá.

Em uma classe Acompanhamento, tenho uma public static jTableEquipe1, e em uma classe TimerAcompanhamento, eu gostaria de alterar a cor dessa jTableEquipe1, assim como eu altero seus valores (Acompanhamento.jTableEquipe1.setValueAt…

Não postei os códigos pq são bem grandes, mas se precisarem eu recorto oq for preciso e posto aki.

Alguem tem idéia de como fazer isso? Encontrei soluções na internet apenas para alterar tabelas dentro da propria classe, e não consegui fazer funcionar dessa forma.

2 Respostas

B

todos foram embora e a dúvida ficou :frowning:
~.~

B

Consegui fazer uma célula mudar a cor da fonte na construção da classe, dei uma pesquisada em outros tópicos e achei alguma coisa, porém agora preciso fazer essas alterações em tempo de execução, de acordo com um timer em cima de uma condição x. Vou continuar pesquisando aqui. Segue o código:

package bruno;

import java.awt.Color;   
import java.awt.Component;   
import java.awt.Font;   
  
import javax.swing.JTable;   
import javax.swing.table.DefaultTableCellRenderer;   



/**
 *
 * @author bruno
 */
  
public class LineSelectionTableCellRenderer extends DefaultTableCellRenderer {   
     
    @Override   
    public Component getTableCellRendererComponent(   
        JTable table,   
        Object value,   
        boolean isSelected,   
        boolean hasFocus,   
        int row,   
        int column)   
    {   
        Component result = super.getTableCellRendererComponent(   
            table,   
            value,   
            isSelected,   
            hasFocus,   
            row,   
            column   
        );   
        
        if( row == 0 && column == 0 && table == Acompanhamento.jTableEquipe1){   
            this.setFont(new Font("arial", Font.BOLD, 12));  
            this.setForeground(Color.RED);
        }else{   
            this.setForeground(Color.DARK_GRAY);   
        }   
        
        return result;   
    }          
}

e na classe principal:

private void initTableRenderers() {
        TableCellRenderer renderer = new LineSelectionTableCellRenderer();  
        
            for (int c = 0; c < jTableEquipe1.getColumnCount(); c++) {   
                jTableEquipe1.setDefaultRenderer(jTableEquipe1.getColumnClass(c), renderer);   
            }
            
            for (int c = 0; c < jTableEquipe2.getColumnCount(); c++) {   
                jTableEquipe2.setDefaultRenderer(jTableEquipe2.getColumnClass(c), renderer);   
            }
            
            for (int c = 0; c < jTableEquipe3.getColumnCount(); c++) {   
                jTableEquipe3.setDefaultRenderer(jTableEquipe3.getColumnClass(c), renderer);   
            }
    }
Criado 2 de maio de 2012
Ultima resposta 3 de mai. de 2012
Respostas 2
Participantes 1