Colorir row

4 respostas
K

Como faço para colorir o bg de uma ou mais rows?

Tenho uma tabela e um sistema de busca que vasculha a tabela e retorna as rows correspondentes, mas gostaria de fazer com que elas tivessem um highlight (não achei métodos de highlight também).

4 Respostas

V

KaL,

Forneça mais detalhes sobre suas dúvidas postadas aqui no fórum, senão não tem como as pessoas responderem.
q tipo de row??? Jtable??? datatable??

K

JTable

discorpio

Boa tarde a todos.

Você pode colorir JTables através de uma classe extendida de JLabels ou até JButtons e que implemente a interface TableCellRenderer. Isto significa dizer que as celúlas da sua JTable será de JLabels ou JButtons, de acordo como ela for extendida.

Um exemplo clássico disto é colorir o JTable no estilo Zebra, contudo voce pode fornecer meios dentro de TableCellRenderer para colorir uma linha específica de acordo com a valor retornado de JTable.

Eis o exemplo no formato zebra:

import java.awt.Color;
import java.awt.Component;
import javax.swing.JLabel;
import javax.swing.JTable;
import javax.swing.table.TableCellRenderer;

public class CellTableZebra extends JLabel implements TableCellRenderer {

    public CellTableZebra(){
        setOpaque(true);
    }

    @Override
    public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
        if ((row % 2)==0){
            setBackground(Color.YELLOW);
            setForeground(Color.RED);
        } else {
            setBackground(Color.WHITE);
            setForeground(Color.BLACK);
        }
        if (value==null){
            setText("");
        } else {
            setText(value.toString());
        }
        return this;
    }

}

O valor de cada célula retornado por JTable é o “Object value” que figura como parâmetro do método getTableCellRendererComponent.

Por fim voce vai configurar o JTable desta forma:

JTable datalist = new JTable(); 
   datalist.setShowGrid(false);
   datalist.setDefaultRenderer(Object.class, new CellTableZebra());
K

Agora entendi e consegui fazer aqui.

Obrigado pela ajuda!

Criado 30 de dezembro de 2010
Ultima resposta 3 de jan. de 2011
Respostas 4
Participantes 3