[RESOLVIDO] Celulas de um jTable com icones diferentes

5 respostas
AMON-HA

Pessoal,
Tenho uma tabela cuja primeira coluna deve haver apenas icones (um de atenção, outro de alerta)…
Quando coloco um icone em uma celula… funciona…
Se eu coloco o mesmo icone da celula da próxima linha… funciona…
Se na celula da próxima linha eu alterar o icone… altera em toda a coluna…

Conclusão… eu consigo colocar um icone em uma celula, só não consigo que em uma mesma coluna tenha dois icones diferentes…

Como eu resolvo esse problema???

5 Respostas

Leandro_M

Ola amigo,

Posta o código para darmos uma olhada.

AMON-HA
Leandro M.:
Ola amigo, Posta o código para darmos uma olhada.
É o seguinte... é uma tabela comum com duas colunas (icone e descrição)... A parte do código que adiciona as linhas é:
tbAlertas.getColumnModel().getColumn(0).setCellRenderer(new adicionarIcone(txtNomeIcone.getText()));
DefaultTableModel modelo = (DefaultTableModel) tbAlertas.getModel();
modelo.addRow(new Object[]{null, txtDescricao.getText()});
O método adicionarIcone é o seguinte:
class adicionarIcone implements TableCellRenderer {

    private String pathIcone;
    JLabel label = new JLabel();
    ImageIcon icone;

    public adicionarIcone(String pathIcone) {
        this.pathIcone = pathIcone;
    }

    @Override
    public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
        icone = new ImageIcon(getClass().getResource(pathIcone));
        label.setHorizontalAlignment(column);
        label.setIcon(icone);
        return label;
    }
}
Leandro_M

Olá,

Não vi algo anormal no código que você mandou.

Verifica apenas se você está passando o path do ícone correto para cada linha da célula.

Abs

AMON-HA
Leandro M.:
Olá,

Não vi algo anormal no código que você mandou.

Verifica apenas se você está passando o path do ícone correto para cada linha da célula.
tbAlertas.getColumnModel().getColumn(0).setCellRenderer(new adicionarIcone(txtNomeIcone.getText()));
Abs
Estava passando corretamente... mas não houve meio de identificar o problema... pra mim também estava tudo ok... Mas eu resolvi o problema utilizando outra classe... Veja como ficou...
class IconeTabela extends DefaultTableCellRenderer {

    @Override
    protected void setValue(Object value) {
        String pathIcone = (String) value;
        ImageIcon icone = new ImageIcon(getClass().getResource(pathIcone));
        setIcon(icone);
    }
}
Mais simples, funcional e resolveu o problema...
Leandro_M

legal.

Altera o status do tópico para resolvido

Criado 27 de novembro de 2011
Ultima resposta 1 de dez. de 2011
Respostas 5
Participantes 2