Ícone em JTable quase OK

0 respostas
U

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).

Criado 2 de janeiro de 2007
Respostas 0
Participantes 1