jTable com MySql

9 respostas
J

Desculpa estar aqui pedindo esta ajuda mas sou iniciante em java (muito, muito, muito iniciante), já consegui criar uma aplicação com acesso ao banco MySql, gravando, excluindo e editando, mas agora tenho que criar um jFrame e ai começou o problema, ja tentei varios exemplos na net mas na consigo resolver, quero criar uma jTable em um jForm para listar a minha Tabela. Queria um exemplo bem simples, bem explicado baseado em meu BD.

Tabela do MySql: Acervo
Campos: Id (Long) e Nome (Varchar)

Meu sistema é dividido em Classe CriaConexao (BD), Acervo (Logica), AcervoDao (Classe Dao com os Metodos).

Segue abaixo o meu metodo dento da classe AcervoDao que realiza a busca e retorna o resultado em “minhaLista”.

public List<Acervo> getLista() throws SQLException {
        String sql = "select * from acervo";
        PreparedStatement stmt = this.conexao.prepareStatement(sql);
        ResultSet rs = stmt.executeQuery();

        List<Acervo> minhaLista = new ArrayList<Acervo>();

        while (rs.next()) {
            Acervo a1 = new Acervo();
            a1.setId(rs.getLong("Id"));
            a1.setNome(rs.getString("nome"));
            minhaLista.add(a1);
        }

        rs.close();
        stmt.close();
        return minhaLista;

    }

É exatamente o resultado que consta em minha lista que quero mostrar em uma jTable.

Aguardo uma resposta.

Grato

Jose Neto.

9 Respostas

ViniGodoy

Bom, você já tem o DAO;
Você já tem as classes de negócio;

Você já tem a view (que é o JTable);

Falta apenas criar uma classe intermediária, entre a view e o model, que descreva para o JTable o que precisa ser desenhada. Essa classe chama-se TableModel.
O Java fornece o DefaultTableModel. Não recomendo nem um pouco utiliza-lo. Ele vai quebrar o padrão MVC que você está montando com o devido cuidado.

No lugar, aprenda a fazer seu próprio AcervoTableModel, seguindo os links da minha assinatura, ou use um TableModel com binding, como o ObjectTableModel do Mark (link também na minha assinatura).

J

Realmente agrdeço a sua resposta, mas ainda nao consegui colocar na minha cabeça como fazer o jTable receber o List, voce pode ser mais detalhado.

Grato

ViniGodoy:
Bom, você já tem o DAO;
Você já tem as classes de negócio;

Você já tem a view (que é o JTable);

Falta apenas criar uma classe intermediária, entre a view e o model, que descreva para o JTable o que precisa ser desenhada. Essa classe chama-se TableModel.
O Java fornece o DefaultTableModel. Não recomendo nem um pouco utiliza-lo. Ele vai quebrar o padrão MVC que você está montando com o devido cuidado.

No lugar, aprenda a fazer seu próprio AcervoTableModel, seguindo os links da minha assinatura, ou use um TableModel com binding, como o ObjectTableModel do Mark (link também na minha assinatura).

ViniGodoy

Você seguiu os links da minha assinatura? Mais especificamente, esse aqui?
http://www.guj.com.br/posts/list/132698.java#714736

J

Cara eu ja li, olhei estudei e nao consegui, deixa eu te explicar, sou novo em Java, quero apenas criar uma tela que liste o acervo, é apenas uma coisa bem simples.

Se voce puder dar uma dica bem basica e que de pra eu entender agradeço.

ViniGodoy:
Você seguiu os links da minha assinatura? Mais especificamente, esse aqui?
http://www.guj.com.br/posts/list/132698.java#714736

ViniGodoy

Poste sua classe Acervo.

ViniGodoy

Você TEM CERTEZA que você não consegue COPIAR aquela classe do TableModel, trocar onde está escrito “Livro” pela palavra “Acervo”, e fazer as devidas adaptações?

Posso até postar um exemplo aqui pra vc com a sua classe, mas adaptar deveria ser muito fácil. Você já usa as collections corretamente e o PreparedStatement também, me impressiona que esteja tendo problema em adaptar um código.

J

Eu ja fiz isso, mas uma coisa nao entendi, akela classe tenho que criar uma classe nova no meu projeto com o nome de “LivrosTableModel” gerar todo akele codigo e depois instanciar ela no meu Form ligando a minha jTable é isso??

ViniGodoy:
Você TEM CERTEZA que você não consegue COPIAR aquela classe do TableModel, trocar onde está escrito “Livro” pela palavra “Acervo”, e fazer as devidas adaptações?

Posso até postar um exemplo aqui pra vc com a sua classe, mas adaptar deveria ser muito fácil. Você já usa as collections corretamente e o PreparedStatement também, me impressiona que esteja tendo problema em adaptar um código.

ViniGodoy

Isso. “Todo aquele código” é muito menos código do que se você for usar o DefaultTableModel. Sem falar que fica muito mais organizado. Dados num lugar, view no outro, como manda o bom padrão MVC.

Então, depois de criado o LivrosTableModel você simplesmente faz:

List&lt;Acervo&gt; livros = getLista(); AcervoTableModel model = new AcervoTableModel(lista); seuTable.setModel(model);

Pronto! A lista está associada a sua tabela. :slight_smile:

J

Vini valeu mesmo,obrigado pela dua paciência, agora é só trabalhar, acho que já está entrando na minha cuca rsrsrs…

Abraços

Isso. “Todo aquele código” é muito menos código do que se você for usar o DefaultTableModel. Sem falar que fica muito mais organizado. Dados num lugar, view no outro, como manda o bom padrão MVC.

Então, depois de criado o LivrosTableModel você simplesmente faz:

List&lt;Acervo&gt; livros = getLista(); AcervoTableModel model = new AcervoTableModel(lista); seuTable.setModel(model);

Pronto! A lista está associada a sua tabela. :)

Criado 1 de novembro de 2010
Ultima resposta 6 de nov. de 2010
Respostas 9
Participantes 2