Pessoal não estou conseguindo colocar imagem na celula da tabela
tenho o sequinte metodo
[code]public ArrayList list() throws SQLException{
ArrayList listar = new ArrayList<>();
stmt = connection.createStatement();
resultset = null;
try {
Icon editar = new ImageIcon(“D:/IMAGENS/editar.jpg”);
Icon excluir = new ImageIcon(“D:/IMAGENS/excluir.jpg”);
PreparedStatement sql = connection.prepareStatement("SELECT * FROM Cursos");
resultset = sql.executeQuery();
while(resultset.next()){
Cursos cliente = new Cursos();
cliente.setId(resultset.getLong("ID"));
cliente.setCursos(resultset.getString("Cursos"));
cliente.setvEditar(editar);
cliente.setvExcluir(excluir);
listar.add(cliente);
}
} catch (SQLException e) {
}
return listar;
}[/code]
Porem ao Invez de aparecer a imagem esta aparecendo o texto “D:/IMAGENS/editar.jpg”
o que esta de errado no metodo ?
Como está implementado seu TableModel?
E você adicionou um CellRenderer na célula em questão?
Estou implementando assim:
[code]
public Class<?> getColumnClass(int columnIndex){
switch (columnIndex){
case 0:
return String.class;
case 1:
return String.class;
case 2:
return Image.class;
case 3:
return Image.class;
default:
throw new IndexOutOfBoundsException("ColumnIndex out of bounds");
}
}
@Override
public Object getValueAt(int rowIndex, int columnIndex) {
Cursos curso = listacursos.get(rowIndex);
switch(columnIndex){
case 0: return curso.getId();
case 1: return curso.getCursos();
case 2: return curso.getvEditar();
case 3: return curso.getvExcluir();
}
return null;[/code]
Classe JTableRenderer
[code]import javax.swing.ImageIcon;
import javax.swing.table.DefaultTableCellRenderer;
/**
*
-
@author dhenrique
*/
public class JTableRenderer extends DefaultTableCellRenderer{
@Override
protected void setValue(Object value){
if(value instanceof ImageIcon){
if(value != null){
ImageIcon d = (ImageIcon) value;
setIcon(d);
}else{
setText("");
setIcon(null);
}
}else{
super.setValue(value);
}
}//fim função
}[/code]
E você chamou um:
seuTable.setDefaultRenderer(Image.class, new JTableRenderer());
em algum lugar?
Chamei não Viny…
onde devo exatamente chamar ?
Na verdade, esse renderer está errado também, você deveria sobrescrever o método getTableCellRendererComponent e não o setValue.
[quote=douglasduarte360]Chamei não Viny…
onde devo exatamente chamar ?[/quote]
Na criação da Tabela. Você tem que avisar a ela que para desenhar o Image.class é necessário usar esse Renderer aí. É esse método que “liga” a classe retornada pelo getColumnClass ao Renderer, entendeu?
Obrigado ViniGodoy consegui
só chamei o
jTableCursos.setDefaultRenderer(Image.class, new JTableRenderer());
no construtor da tabela e deu certo.