Pessoal, tenho que exibir na minha JTable uma coluna com um ícone que representará o estado dos dados no sistema (0 = iconeCD, 1 = iconeBD).
a classe IMAGEM é descrita logo abaixo:package com.sismed.tablemodel;
import java.awt.Component;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JLabel;
import javax.swing.JTable;
import javax.swing.table.TableCellRenderer;
public class Imagem extends JLabel implements TableCellRenderer{
String codigo;
public Imagem(int cod){
switch (cod){
case 0:
codigo = "c:\\iconeCD.jpg";
break;
case 1:
codigo = "c:\\iconeBD.jpg";
break;
}
setOpaque(true);
}
public Component getTableCellRendererComponent(JTable table,
Object value, boolean isSelected, boolean hasFocus, int row,
int column){
Icon imagem = new ImageIcon(codigo);
// certifique-se da existencia da imagem "icon.gif" antes de executar
if(isSelected)
setBackground(table.getSelectionBackground());
else
setBackground(table.getBackground());
setIcon(imagem);
//setText(value.toString());
return this;
}
public void validate() {}
public void revalidate() {}
protected void firePropertyChange(String propertyName, Object oldValue, Object newValue) {}
public void firePropertyChange(String propertyName, boolean oldValue, boolean newValue) {}
}
}
Após listar a tabela, executo o seguinte código:
TableCellRenderer tcr = new Imagem(1);
TableColumn column = tabelaArquivamento.getColumnModel().getColumn(1);
column.setCellRenderer(tcr);
o problema é que eu preciso setar cada celula(x,1) - onde x é o numero da linha e 1 é a coluna que contém o ícone - com o ícone correspondente ao dado representado (1 ou 2) e as instruções acima setam o ícone de todas as celulas (x,1).
Tentei criar o seguinte laço para alterar os ícones após preencher a tabela:Iterator iterator = lista.iterator();
int posicao = 0;
Cliente cliente = new Cliente();
while (iterator.hasNext())
{
cliente = (Cliente)iterator.next();
imagem = new Imagem(cliente.getEstado());
tabelaArquivamento.setValueAt(imagem,posicao,1);
posicao ++;
}
Mas não obtive sucesso. Alguém sabe o que posso fazer para alterar os ícones de forma a representarem o estado do cliente de forma correta (1 ou 0 pra cada linha, e não para toda a coluna).