1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

Criar colunas e linhas dinâmicas na jtable a partir de registros do banco de dados

Olá a todos,

Obrigada pela ajuda.

Eu ainda não havia visto JTABLE MODEL, eu dei uma pesquisada nos posts que vcs me indicaram e achei a idéia bem interessante, infelizmente eu tenho pouquissimo tempo para terminar essa aplicação. Mas na próxima aplicação que eu criar irei utilizar essa idéia.

Eu consegui resolver meu problema com defaultTableModel mesmo, e o melhor de tudo é que eu consegui criar a jtable a partir de duas tabelas do banco de dados:

  • As colunas são geradas a partir dos dados da tabela disciplina;
  • As linhas (correspondentes à primeira coluna) são geradas através da tabela aluno;

Segue abaixo meu código:

Meu método para resgatar os valores das tabelas disciplina e aluno e inseri-las na jtable:

public void listarAlunosNotas() throws Exception {

        TelaPrincipal.notaslabelretorno.setVisible(true);
        try {
\\ Query utilizada para resgatar os valores que serão as heads das minhas colunas
            String coluna = "select NomeDisciplina from disciplina";
            preparedStatement = (PreparedStatement) conexao.prepareStatement(coluna);
            rscoluna = preparedStatement.executeQuery();


\\ Query utilizada para resgatar os valores que serão as linhas da minha primeira coluna
            String linha = "select NomeAluno from aluno";
            preparedStatement = (PreparedStatement) conexao.prepareStatement(linha);
            rslinha = preparedStatement.executeQuery();

\\ Verifica se há resultados da query coluna, se sim ira criar as colunas
            if (rscoluna.next() == true) {
                DefaultTableModel modelo = (DefaultTableModel) TelaPrincipal.notastabela.getModel();
                modelo.setColumnCount(0);
                modelo.setRowCount(0);

               modelo.addColumn("ALUNOS"); \\cria a coluna onde ficarão os valores do resultado da query linhas

               modelo.addColumn(rscoluna.getString("NomeDisciplina"));

\\ Verifica se há resultados da query linha, se sim ira criar as linhas                
    if (rslinha.next() == true) {
                    TelaPrincipal.notaspaneltabela.setVisible(true);
                    modelo.addRow(new Object[]{rslinha.getString("NomeAluno")});

                } else if (rslinha.next() == false) {
                    TelaPrincipal.notaspaneltabela.setVisible(false);
                    TelaPrincipal.notaslabelretorno.setText("Esta turma não possui nenhum aluno matriculado!");
                    TelaPrincipal.notaslabelretorno.setVisible(true);
                }

\\ laço criado para que, enquanto tenha resultados da query coluna, sejam criadas novas colunas
                   while (rscoluna.next()) {
                    modelo = (DefaultTableModel) TelaPrincipal.notastabela.getModel();
                    modelo.addColumn(rscoluna.getString("NomeDisciplina"));

\\ laço criado para que, enquanto tenha resultados da query coluna, sejam criadas novas linhas (na posição da primeira coluna)
     while (rslinha.next() == true) {
                        contadorderegistros++;
                        modelo.addRow(new Object[]{rslinha.getString("NomeAluno")});
                    }
                }
                TelaPrincipal.notaslabelretorno.setText("Esta turma possui " + contadorderegistros + " aluno(s) matriculado(s)!");
                TelaPrincipal.notaslabelretorno.setVisible(true);
            }

        } catch (Exception sqlEx) {
        }
    }

Chamada ao método pelo jbutton:

    private void notasbotaobuscarActionPerformed(java.awt.event.ActionEvent evt) {                                                 
        if (evt.getSource() == notasbotaobuscar) {
            try {
                notasDAO notasdao = new notasDAO();
                notasdao.listarAlunosNotas();
            } catch (Exception ex) {
                Logger.getLogger(TelaPrincipal.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
    }
  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

2 respostas

Não é a resposta que estava procurando? Procure outras perguntas com as tags java sql swing ou faça a sua própria pergunta.