Reexecutar Renderer JTable

1 resposta
P
Uso um renderer como esse para de acordo com um dado, exibir um icone na JTable:
ublic class TestCellRenderer extends JLabel implements TableCellRenderer {	
	List<Student> list=null;
	public TestCellRenderer(List<Student> l){
		super();
		   this.list=l;		
	}
	
	@Override
	public Component getTableCellRendererComponent(JTable table, Object object,boolean isSelected, boolean hasFocus, int row, int column) {	
		     Student s=list.get(row);
			if(s.getPoints()>=90)
		        	setIcon(new ImageIcon(getClass().getResource(okay_path)));
			if(s.getPoints()<90)
				setIcon(new ImageIcon(getClass().getResource(error_path)));    	    	
			    	     
		} 		
			setHorizontalAlignment(JLabel.CENTER);			
		return this;
	}

}
Que funciona 100% quando eu carrego os dados para a JTable e mostra o ícone perfeitamente.Meu problema começa quando eu clico na linha da JTable e eu preciso editar esses dados.Dependendo do valor, a imagem será mudada.Mas eu nunca consigo atualizar o JLabel no model da minha JTable. tentei forçar, mas não muda a imagem a não ser que eu feche a tela e entre de novo:
public JLabel setJLabel(int value){
		  JLabel l=new JLabel();
		       if(value>=90)
			 l.setIcon(new ImageIcon(getClass().getResource("...successpath")));
		       else if(value<90)
			 l.setIcon(new ImageIcon(getClass().getResource("...failedpath")));
		   return l;
}
no meu setData: s.setRate(setJLabel(c.getRate())); Mas nada funcionou.

1 Resposta

Ironlynx

Reexecutar renderer?Para que isso?Não precisa de renderer. O model pode mostrar imagens nativamente.Armazene suas imagens no seu model e crie um método que recebe o valor inteiro e retorne um ImageIcon no seu getValueAt. Não esqueça do getColumnClass retornando um ImageIcon para a coluna que sua imagem aparecerá.

Criado 24 de setembro de 2013
Ultima resposta 5 de out. de 2013
Respostas 1
Participantes 2