[RESOLVIDO] Jtable mostrando os endereços de memória dos objetos

5 respostas
MarcosPadilha

daew galera … seguinte … to usando uma jtable pra mostrar os dados do BD, os dados estão chegando na jtable, porem ao invés de mostrar os dados do objeto, me mostra o endereço de memoria dele.
segue o fonte
fonte do botão q carrega os dados

private void btnListarActionPerformed(java.awt.event.ActionEvent evt) {
        // TODO add your handling code here:
        ServiceImpl<Produtos> service = new ServiceImpl<Produtos>(Produtos.class);
        //service.findAll();
        DefaultTableModel modelo = new DefaultTableModel(new Object[][]{}, new Object[]{"Codigo", "Descrição"});
        modelo.addRow(service.findAll());
        jtable.setModel(modelo);
}

função que faz a consulta no banco

public Vector<T> findAll() {
		initTransaction();
		String sql = null;
		if (clazz.equals(Produtos.class))
			sql = "from Produtos";
  		List<T> list = entityManager.createQuery(sql).getResultList();
        Vector<T> vetor = new Vector<T>(list);
        //System.out.println(list);
		return vetor;
	}

se puderem ajudar agradeço … flw

5 Respostas

R

Se a JTable está mostrando o endereço de memória, então você NÃO redefiniu o método toString() dos objetos que inseriu na tabela. Sugestões: alterar o método toString() dos objetos inseridos, ou então inserir apenas propriedades específicas dos objetos.

MarcosPadilha

ok, seria colocar no bean, um metodo toString() com retorno das informações que eu queira … isso ??

@Override
    public String toString() {
        return descricao;
    }

tentei dessa forma e me retornou o seguinte na table

ou seja ele me retornou a descricao em uma coluna com 2 linhas, as 2 linhas são exatamente a quantidade de registros na tabela do BD, porem o resulta do era pra ser

vlw pela ajuda

R

Seria isso mesmo. Quanto ao erro, problemas de stack overflow sugerem que há algum elemento recursivo no seu programa, e esse elemento recursivo está chamando a si próprio sem limitar a quantidade de chamadas.

MarcosPadilha

editei o post pq o erro era pq eu havia descomentado uma instancia de Service … eheeh mals … agora tah certo

MarcosPadilha

brother … resolvi … fiz umas alterações aqui e deu certinho mostrou as informações exatamente como estavam no BD

private void btnListarActionPerformed(java.awt.event.ActionEvent evt) {                                          
        // TODO add your handling code here:
        ServiceImpl<Produtos> service = new ServiceImpl<Produtos>(Produtos.class);
        Vector titulo = new Vector();
        titulo.add("Codigo");
        titulo.add("Descrição");
        Vector linhas = new Vector();
        for (Produtos p : service.findAll()){
            Vector colunas = new Vector();
            colunas.add(p.getCodigo());
            colunas.add(p.getDescricao());
            linhas.add(colunas);
        }
        DefaultTableModel modelo = new DefaultTableModel(linhas,titulo);
        jtable.setModel(modelo);
}

no vetor titulo eu adicionei os titulos das colunas, no vetor linhas eu adicionei o vetor colunas onde cada coluna recebe um valor no caso codigo e descricao. depois adicionei no DefaultTableModel o vetor linhas e o vetor titulo. e ficou ok …
vlw pela ajuda … abraços

Criado 28 de maio de 2009
Ultima resposta 29 de mai. de 2009
Respostas 5
Participantes 2