Pessoal, gostaria de saber se é possível mudar a cor do texto de uma determinada célula de uma JTable dependendo de uma condição, ou seja, queria que determinadas células ficassem com a letra vermelha caso fossem menore que 60, mas não sei onde e como fazer isso.
Eu uso um model próprio pra JTable.
Se alguém puder me ajudar eu agradeceria…
Obrigado,
Att,
Robert
Primeiramente obrigado pela dica.
Eu não consegui entender como fazer pra conseguir o efeito que preciso. Li o material mas não entendi direito.
Na minha aplicação eu já tenho a seguinte classe:
public class FormatacaoConteudo extends DefaultTableCellRenderer implements TableCellRenderer {
@Override
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
return this;
}
}
E depois na aplicação eu uso o seguinte pra poder mudar a cor das células de algumas colunas:
FormatacaoConteudo corNomes = new FormatacaoConteudo();
Color nomesCor = new Color (202, 225, 255);
corNomes.setBackground(nomesCor);
//E na tabela eu set o renderer dela assim
table.getColumnModel().getColumn(0).setCellRenderer(corNomes);
O que queria fazer agora é colocar o texto dentro da célula em vermelho caso o valor fosse menor que 60, mas não entendi direito onde que devo verificar qual pe o valor pra poder setar um cellRenderer pra célula em questão.
Agradeço a atenção e fico no aguardo.
Abraço.
É nessa classe que você põe:
public class FormatacaoConteudo extends DefaultTableCellRenderer implements TableCellRenderer {
@Override
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
//Aqui você escreve o código que faz o setBackground para a cor desejada. Note que vc tem o valor da célula e a linha e coluna dela.
return this;
}
}
Depois é só associar esse renderer a sua tabela.
Cara, entendi direitinho agora como funciona esta parte, pois tenho a coluna. linha e valor e posso fazer o que quiser com elas.
Muito obrigado pela ajuda.
Vc tinha me ajudado muito faz um tempinho atrás, aprendi muita coisa depois das suas dicas, brigadão mesmo.
Se puder dar uma olhadinha em um tópico que deixei sobre como imprimir o conteúdo de um Jframe eu agradeceria muito, pois vc sempre responde de forma concreta e que eu entendo direitinho.
Grande abraço.
Como Faço para associar esse renderer a tabela ?
Cara, na verdade tu não associa diretamente à tabela e sim à uma coluna em específico, ou seja, obtm o modelo da tabela, selecionada a coluna desejada e associa o renderer…imagino que possa ter uma forma de associar um renderer à tabel inteira, mas no meu caso eu usei apenas para algumas colunas, então foi assim que fiz.
Grande abraço.
ViniGodoy
Eu usei o trecho de código que postou, porém ele seta toda a coluna de uma mesma cor, tem como setar apenas uma unica célula de uma cor pré estabelecida?
rbernardes, bem-vindo ao GUJ!
Por favor, não ressuscite tópicos!!!
Nesse tópico: http://www.guj.com.br/java/288692-colorir-celulas-com-tablecellrenderer-
A resposta está no primeiro post.Você tem que se lembrar que o trabalho principal é feito por colunas(deveria ser por célula, mas se formos falar dos erros do Java…), por isso, pegue a linha com a célula para trabalhar e a coluna para adicionar o renderer, como isso:
TableCellRenderer tcr = new ColorirAzul(i);
TableColumn column = table.getColumnModel().getColumn(7);
column.setCellRenderer(tcr);