Colorir JTable

Olá a todos,
1° post :lol:

Estou tentando colorir o JTable, mais nao quero colorir somente o fundo com .setBackground ou colorir somente uma “celula”

eu preciso colorir uma linha inteira, quando uma celula tiver o valor desejável.

alguem pode me ajudar ?

Oi ChicoMoretti,

Seja bem vindo! :stuck_out_tongue:

http://download.oracle.com/javase/tutorial/uiswing/components/table.html#renderer

Então como mostra o anexo, eu consigo colorir a celula porem queria colorir a linha onde a célula tem valor “010”.

alguem pode me ajudar ??

( class que colori célula )

class Colorir extends JLabel implements
        TableCellRenderer {

    public Colorir() {
        setOpaque(true);
    }

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

        if (value.toString().equals("010")) {
            setBackground(Color.RED);
        } else {
            setBackground(table.getBackground());
        }

        setText(value.toString());

        return this;
    }

    public void validate() {
    }

    public void revalidate() {
    }

    protected void firePropertyChange(String propertyName,
            Object oldValue, Object newValue) {
    }

    public void firePropertyChange(String propertyName,
            boolean oldValue, boolean newValue) {
    }
}

(função que chama colorir )

TableCellRenderer tcr = new Colorir();
                TableColumn column = jTable1.getColumnModel().getColumn(3);
                column.setCellRenderer(tcr);

:?: :?: :?:


Por incrivel que pareça, voce soluciona isso arrumando o TableModel.

Se voce criar um orientado a objeto, voce com a JTable em mãos faria mais ou menos o seguinte:

Pallet pallet = table.getTableModel().get(row);//Voce tambem tem a linha correspondente como argumento

Dai invés de

if (value.toString().equals("010")) {   
            setBackground(Color.RED);   
        } else {   
            setBackground(table.getBackground());   
        }  

Voce faria.

if (pallet.getBlock().equals("010")) {   
            setBackground(Color.RED);   
        } else {   
            setBackground(table.getBackground());   
        }  

E sua linha inteira estara com a cor.

esse Pallet ?

o que vem a ser não estou conseguindo entender o pq dele, procurei no forum alguem falando sobre esse Pallet e não achei.

Eu só deduzi que voce tem uma classe modelo para um palete, voce não tem?

Ela não existe mesmo.

kkkkkkkkkk

pior que não tem, estou tentando pintar as linhas faz 2 dias e nada =/
ou eu pinto ( tudo ) ou eu pinto a celula…

Pallet me enganou =/

Oi,

Sera que é isso:http://www.guj.com.br/posts/list/63893.java

Boa sorte!

Ué, como voce trabalha com esses dados? Sempre que precisa voce faz um select no banco e pega um array e quando precisa salvar passa uma renca de parametros que represente um palete?

Voce nao tem nenhum modelo? Algo como:

public class Palete{
private long id;
private String carga;
private boolean ocupado;
//Mais atributos

//getters e setters
}

?

Eu tenho que fazer consulta para cada produto.

então escolho o item 040010027 + atualizar = ( go base e consulta )…

faço a consulta na base principal jogo o resultado no jtable e fecho conexão.

só que os itens que são “010” são itens que estão bloqueados por algum motivo ( qualidade, logística, quarentena respectivamente (“100”, “010”,“001”) )

então as informações já estão na tabela… eu quero colorir depois que jogar o dado na tabela.

para que o usuário veja que tais itens não podem serem preparados pq estão bloqueados. só a informação numerica não é sulficiente precisa ser algo visual .

Mudando minha pergunta.
Voce não tem classes de modelo no seu sistema?

não =/