Mudar cor de algumas linhas jTable

6 respostas
F

Olá!
Gostaria de saber como eu faço para mudar a cor de algumas linhas de uma jTable.
É o seguinte:
Nesta jTable eu consulto produtos e gostaria que quando o produto estiver com o estoque igual a 0 a linha apareça em vermelho. Nela eu mostro o Código, Descrição, Estoque e Estoque Mínimo.
Agradeço a ajuda!
T+

6 Respostas

F

Eu não tenho aqui o código, mas vc precisará criar uma classe que implemente TableCellRenderer, e registrar ela como sendo o renderizador da célula que você for implementar essa lógica. Dá uma olhada na documentação dessa classe que é bem simples.

L

Oi,

Exatamente isso..
Você deverá implementar a classe TableCellRenderer e sobreescrever métodos necessários.

Apenas um exemplo.:

class			Colorir 
	extends		JLabel 
	implements	TableCellRenderer
{
	public 
	Component		getTableCellRendererComponent
				(
			     		JTable			table, 
					Object			value, 
					boolean			isSelected,
	        			boolean			hasFocus, 
					int			row,
					int			column	
				)
	{
    
     		if(estoque == 0)
		{
		       setForeground(Color.RED);	
		}
		else
		{
		       setForeground(Color.BLACK);		
		}
     
     		setText(value.toString());
     	
		return this;   	
	}
}

E você chama essa classe desta maneira.:

TableCellRenderer tcr = new Colorir();
TableColumn column =  tabela.getColumnModel().getColumn(1);
column.setCellRenderer(tcr);

Espero ter ajudado

Tchauzin!

G

Google 1º resultado:

http://www.java2s.com/Code/Java/Swing-JFC/InstalldifferentTableRendererforevenandoddrows.htm

M

Colorir linha especifica em JTable

F

Ae galera! Valeu pelas dicas!
Tô implementando aqui qualquer coisa eu posto o resultado!
Valew!

A
lina:
Oi,

Exatamente isso..
Você deverá implementar a classe TableCellRenderer e sobreescrever métodos necessários.

Apenas um exemplo.:

class			Colorir 
	extends		JLabel 
	implements	TableCellRenderer
{
	public 
	Component		getTableCellRendererComponent
				(
			     		JTable			table, 
					Object			value, 
					boolean			isSelected,
	        			boolean			hasFocus, 
					int			row,
					int			column	
				)
	{
    
     		if(estoque == 0)
		{
		       setForeground(Color.RED);	
		}
		else
		{
		       setForeground(Color.BLACK);		
		}
     
     		setText(value.toString());
     	
		return this;   	
	}
}

E você chama essa classe desta maneira.:

TableCellRenderer tcr = new Colorir();
TableColumn column =  tabela.getColumnModel().getColumn(1);
column.setCellRenderer(tcr);

Espero ter ajudado

Tchauzin!

Bom dia lina será q vc pode me da uma forcinha com essa implementação aqui: http://www.guj.com.br/java/305850-mudar-as-cores-das-linha-de-uma-jtabel-conforme-data-de-vencimento

Criado 13 de julho de 2009
Ultima resposta 7 de nov. de 2013
Respostas 6
Participantes 6