Ajuda com CellRenderer, ele pinta toda coluna ao inves de so a com o valor

3 respostas
Stingray

E ai pessoal

e o seguinte fiz um CellRenderer ainda nao entendendo muito bem como e que ele funciona...

eu queria que ele quando encontrasse uma celula com o valor "1"(String) mudasse o BackGround para Azul.
mas o meu nao faz isso. ele muda a cor de todas as celulas da coluna que voce clicar depois de inserir 1 em qq uma daquela coluna.
outra coisa e que ele pinta tudo o numero e o fundo de azul e nao vejo mais o numero.

como resolver isso ?

package TableModel;

import javax.swing.BorderFactory;
import javax.swing.JLabel;
import javax.swing.JTable;
import javax.swing.border.Border;
import javax.swing.table.TableCellRenderer;
import java.awt.Color;
import java.awt.Component;
import javax.swing.table.DefaultTableCellRenderer;

public class ColorRenderer extends DefaultTableCellRenderer
{
	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);
		
	if (value != null)
	{
		
		if (value.equals("1"))
		{

			super.setBackground(Color.blue);
			return this;
		}
		else
		{
			return this;
		}
	}
	else
	{
		return c;
	}
	}
}

sei que deve ser bobo mas estou com problemas serios de entender como funciona a JTable por dentro.

3 Respostas

davidbuzatto

Pq vc está utilizando super nas suas chamadas de método? Vc está herdadando de DefaultCellRenderer, use os métodos sem o super.

Tenta fazer

c.setBackground( Color.blue )

Ai ele vai pegar apenas o componente obtido…

Não tive tempo de ler o código com calma…

Até mais!

Stingray

Era isso mesmo…

Valeu !

davidbuzatto

Que bom que deu certo!

Até mais!

Criado 8 de agosto de 2007
Ultima resposta 9 de ago. de 2007
Respostas 3
Participantes 2