Olá amigos,
criei a seguinte classe abaixo para personalizar uma JTable minha de acordo com os requisitos da aplicação:
package gui.auxilio;
import java.awt.Color;
import java.awt.Component;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JTable;
import javax.swing.table.DefaultTableCellRenderer;
import objetos.Pesagem;
/**
*
* @author maycon
*/
public class RendererTable extends DefaultTableCellRenderer {
private List<Pesagem> listPesagens;
public RendererTable(List<Pesagem> list) {
setOpaque(true);
this.listPesagens = list;
}
@Override
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
/**Verifica se as Pesagens ainda não foram concluídas e pinta a cor da fonte desta célula**/
if(!listPesagens.get(row).isConcluida()){
this.setForeground(Color.red);
}else{
this.setForeground(Color.black);
}
this.setValue(value);
return this;
}
}
Porém depois de implementa-la, ao clicar sobre uma linha da tabela a mesma não é destacada, ou seja, o evento funciona perfeitamente, porém não tenho nenhuma resposta de cor da linha ou outra coisa que indique que a mesma foi clicada.
Ao preencher a tabela eu implemento esta classe assim:
/**Preenche a tabela com os elementos de @list**/
for (int i = 0; i < list.size(); i++) {
Pesagem p = list.get(i);
Entidade cliente = (Entidade) entDao.consultar("idEntidade=" + p.getEntidade().getIdEntidade()).get(0);
modelo.addRow(new Object[]{p.getIdPesagem(), con.getDataFormatadaNoBd(p.getData()), cliente.getNome(),
("R$ " + df.format(p.getValorPesagem()))});
/**Altera as propriedades das células desta linha de acordo com o estado de conclusão da transação atual**/
coluna1.setCellRenderer(renderer);
coluna2.setCellRenderer(renderer);
coluna3.setCellRenderer(renderer);
coluna4.setCellRenderer(renderer);
Gostaria da ajuda de vocês. Obrigado.