Pintar linha Jtable com condição Java Netbeans

8 respostas
jtable
araujors

Boa tarde pessoal, preciso pintar apenas as linhas da coluna 7 conforme abaixo, mas meu código esta pintando a coluna toda, alguem poderia me dar uma luz de como pintar somente o que esta dentro do for.

public void carregaCorDia() {

    DefaultTableCellRenderer coluna = new DefaultTableCellRenderer();
    coluna.setForeground(Color.BLACK);
    coluna.setBackground(Color.YELLOW);

    for (int i = 0; i < tabelaConsulta.getRowCount(); i++) {
        String valor = tabelaConsulta.getValueAt(i, 7).toString();
        int novoValor = Integer.parseInt(valor);
        if (novoValor > 0) {
            System.out.println("Linha.: " + i + " | Valor coluna.: " + novoValor);
            tabelaConsulta.getColumnModel().getColumn(7).setCellRenderer(coluna);
        }
    }
}

8 Respostas

staroski

Ao invés de usar o Default, implementa seu próprio TableCellRenderer.

araujors

Opa amigao, ja tentei mas da erro, olha como eu tinha feito.

DefaultTableCellRenderer renderer = new DefaultTableCellRenderer() {

<a class="mention" href="/u/override">@Override</a>

public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {

Component c = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
int str = (int) value;
            if (str == 0) {
                c.setForeground(Color.WHITE);
                c.setBackground(Color.RED);
            } else {
                c.setForeground(Color.BLACK);
                c.setBackground(new Color(255, 255, 255));
            }
            return c;

        }
    };
    tabelaConsulta.getColumnModel().getColumn(7).setCellRenderer(renderer);
staroski

Que erro?

araujors

Não carrega mais o Jtable e a linha de código “int str = (int) value” da erro do tipo inteiro.
E se eu altero e converto de String para inteiro ele pinta a coluna toda ignorando a condição de maior que zero.

staroski

Como é seu TableModel?
Quais as condições para pintar determinada célula em cor diferente?

araujors

No meu table eu faço uma farredura na coluna 7 ao qual estão os valores que eu preciso, tudo que for maior que zero eu pinto se não deixo a cor normal. Eu fiz o código de varias formas, mas todas ele pinta a coluna toda. Mesmo usando DefaultTableCellRenderer tbm da erro.

for (int i = 0; i < tabelaConsulta.getRowCount(); i++) {

int valor = Integer.parseInt(tabelaConsulta.getValueAt(i, 7).toString());

if (valor > 0) {

System.out.println("Linha.: " + i + " | Valor coluna.: " + valor);

tabelaConsulta.getColumnModel().getColumn(7).setCellRenderer(coluna);
}
staroski

Repetir a pergunta:
Como é seu TableModel?
Posta o código.

Quais as condições para pintar determinada célula em cor diferente?
Não posta o código, explica em que situação qual célula deve ser de qual cor.

araujors

Peço desculpas … mas consegui resolver na verdade eu estava fazendo um for errado eu estava passando uma String de um table sem converte-la para Integer usando o proprio setCellRenderer, agora funcionou!

Criado 30 de julho de 2019
Ultima resposta 1 de ago. de 2019
Respostas 8
Participantes 2