Como faço pra atribuir 1 ícone à celula da coluna da tabela relativa ao atributo Armazenado do BD (CD ou BD).
Explicando melhor: Se o dado do cliente A estiver em CD tenho q exibir na coluna 1 (coluna que aparecerá o ícone) um ícone que é um CDsinho, senão, se for BD tenho q exibir o ícone de um repositório de dados…
importjavax.swing.*;importjava.awt.*;importjavax.swing.table.*;publicclassNovaClasseextendsJFrame{publicNovaClasse(){super("Exemplo de uma tabela simples");// colunas da tabelaString[]colunas={"Nome","Idade","Sexo"};// conteúdo da tabela Object[][]conteudo={{"Osmar J. Silva","32","Masculino"},{"Maria Clara Gomes","19","Feminino"},{"Fernando Gomes","15","Masculino"},{"Carlos Vieira","40","Masculino"}};// constrói a tabelaJTabletabela=newJTable(conteudo,colunas);// quero exibir imagens ao lado do texto da primeira colunaTableCellRenderertcr=newImagem();TableColumncolumn=tabela.getColumnModel().getColumn(0);column.setCellRenderer(tcr);tabela.setPreferredScrollableViewportSize(newDimension(350,50));Containerc=getContentPane();c.setLayout(newFlowLayout());JScrollPanescrollPane=newJScrollPane(tabela);c.add(scrollPane);setSize(400,300);setVisible(true);}publicstaticvoidmain(Stringargs[]){NovaClasseapp=newNovaClasse();app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}}classImagemextendsJLabelimplementsTableCellRenderer{publicImagem(){setOpaque(true);}publicComponentgetTableCellRendererComponent(JTabletable,Objectvalue,booleanisSelected,booleanhasFocus,introw,intcolumn){Iconimagem=newImageIcon("icon.gif");// certifique-se da existencia da imagem "icon.gif" antes de executarif(isSelected)setBackground(table.getSelectionBackground());elsesetBackground(table.getBackground());setIcon(imagem);setText(value.toString());returnthis;}publicvoidvalidate(){}publicvoidrevalidate(){}protectedvoidfirePropertyChange(StringpropertyName,ObjectoldValue,ObjectnewValue){}publicvoidfirePropertyChange(StringpropertyName,booleanoldValue,booleannewValue){}}
U
ununes
OK, consegui implementar o código no meu projeto.
// quero exibir imagens ao lado do texto da primeira coluna
TableCellRenderer tcr = new Imagem();
TableColumn column = tabela.getColumnModel().getColumn(0);
column.setCellRenderer(tcr);
Porém, esse código seta 1 único ícone para todas as linhas da tabela. O que preciso é: Pra cada linha setar 1 ícone diferente de acordo com o valor do atributo no banco de dados.
W
wellington7
Estou com o mesmo problema… Infelizmente o renderer insere o ícone da imagem em todas as colunas… Eu queria inserir o ícone em apenas uma célula, ou desenhar usando Graphics (qnd tento o desenho é apagado ao mover a janela).
W
wellington7
Encontrei o tal comando “setCellEditor”, que talvez resolva este caso… mas tá complicado conseguir usar ele…