Cor de fundo das celulas de uma tabela

2 respostas
K

eu quera colocar cores diferentes para cada celula da minha tabela como eu faço isso?

2 Respostas

fabiozoroastro

web? desktop? mobile? folha de caderno? papel de pão… etc…

Rodrigo_Manhaes

Bom, partindo do princípio que este fórum é sobre interfaces gráficas, suponho que seja uma tabela na interface gráfica mais comum na plataforma Java, o Swing.

Para modificar a aparência das células de uma tabela você deve implementar a interface TableCellRenderer e aplicar a sua implementação à tabela através da operação setDefaultRenderer (também é possível aplicar o seu renderer customizado diretamente a uma coluna específica).

Colo abaixo um exemplo de um projeto onde escrevo um renderer para que o visual da tabela fique semelhante a um JTableHeader
package goitaca.renderer.table;

import java.awt.Component;
import java.awt.SystemColor;
import java.util.Arrays;
import java.util.List;

import javax.swing.JLabel;
import javax.swing.JTable;
import javax.swing.UIManager;

public class FixedTableCellRenderer implements TableCellRenderer
{
	private static final long serialVersionUID = -8223392127183298183L;

	private List<Integer> fixedRows;
	private boolean fixedAll = false;
	
	public FixedTableCellRenderer()
	{
		super();
		fixedAll = true;
	}
	
	public FixedTableCellRenderer(Integer... fixedRows)
	{
		super();
		this.fixedRows = Arrays.asList(fixedRows);
	}
	
	public Component getTableCellRendererComponent(JTable table, Object value, 
		boolean isSelected, boolean hasFocus, int row, int column) 
	{
		JLabel component = (JLabel) 
			super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
		
		if (fixedAll || fixedRows.contains(column))
		{
			component.setBackground(table.getTableHeader().getBackground());
			component.setForeground(table.getTableHeader().getForeground());
			component.setBorder(UIManager.getBorder("TableHeader.cellBorder"));
		}
		else
		{
			component.setBackground(SystemColor.text);
			component.setForeground(SystemColor.textText);
		}
		
		return component;
	}
}
Daí você pode adicionar isto à tabela:
minhaTabela.setDefaultRenderer(Object.class, new FixedTableCellRenderer());
Criado 27 de março de 2007
Ultima resposta 27 de mar. de 2007
Respostas 2
Participantes 3