Pintar linha da Table e centralizar duas colunas

0 respostas
B

Senhores, muito bom dia.

Tenho aqui em meu sistema um método que faz a linha da tabela piscar.
Para isso pego o conteúdo de uma coluna e comparo com outro
e uso um timer para fazer piscarem as linhas escolhidas.

Essas duas colunas que uso para comparar são dados numéricos.
O caso é que eu quero centralizar essas duas colunas.
Funciona assim:

Método que aplica o Renderer:

private void aplicaRenderer(int escolhe) {

        TableCellRenderer tcr1 = new LinhaCor();
        TableCellRenderer tcr2 = new LinhaPisca();
        
        TableColumn column0 = tbEstoque.getColumnModel().getColumn(0);
        TableColumn column1 = tbEstoque.getColumnModel().getColumn(1);
        TableColumn column2 = tbEstoque.getColumnModel().getColumn(2);
        TableColumn column3 = tbEstoque.getColumnModel().getColumn(3);
        TableColumn column4 = tbEstoque.getColumnModel().getColumn(4);

        if (escolhe == 1) {
            column0.setCellRenderer(tcr1);
            column1.setCellRenderer(tcr1);
            column2.setCellRenderer(tcr1);
            column3.setCellRenderer(tcr1);
            column4.setCellRenderer(tcr1);
        } else {
            column0.setCellRenderer(tcr2);
            column1.setCellRenderer(tcr2);
            column2.setCellRenderer(tcr2);
            column3.setCellRenderer(tcr2);
            column4.setCellRenderer(tcr2);
        }
    }

Classes Renderer:

class LinhaCor extends DefaultTableCellRenderer {

    private static final long serialVersionUID = 1L;

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

        Component c = super.getTableCellRendererComponent(table, value,
                isSelected, hasFocus, row, col);
        Object valueAt1 = table.getModel().getValueAt(row, 3);
        Object valueAt2 = table.getModel().getValueAt(row, 4);

        int a1 = (int) valueAt1, a2 = (int) valueAt2;

        if (isSelected) {
            c.setForeground(Color.blue);
            c.setBackground(Color.pink);
        } else {
            c.setForeground(Color.black);
            if (a1 >= a2) {
                c.setBackground(Color.red);
            } else {
                if (row %2 == 1) {
                    c.setBackground(Color.WHITE);
                } else {
                    c.setBackground(Color.LIGHT_GRAY);
                }
            }
        }
        return c;
    }
}

package Fontes;

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

class LinhaPisca extends DefaultTableCellRenderer {

    private static final long serialVersionUID = 1L;

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

        Component c = super.getTableCellRendererComponent(table, value,
                isSelected, hasFocus, row, col);
        Object valueAt1 = table.getModel().getValueAt(row, 3);
        Object valueAt2 = table.getModel().getValueAt(row, 4);

        int a1 = (int) valueAt1, a2 = (int) valueAt2;

        if (isSelected) {
            c.setForeground(Color.blue);
            c.setBackground(Color.pink);
        } else {
            
            if (a1 >= a2) {
                c.setBackground(Color.black);
                c.setForeground(Color.white);
            } else {
                c.setForeground(Color.black);
                if (row %2 == 1) {
                    c.setBackground(Color.WHITE);
                } else {
                    c.setBackground(Color.LIGHT_GRAY);
                }
            }
        }
        return c;
    }
}

Alguém me dá uma luz? B)

Criado 29 de julho de 2015
Respostas 0
Participantes 1