• Categoria do post:Java - NetBeans
  • Tempo de leitura:4 minutos de leitura
Ads

O JTable (ou Tabela), serve para exibir dados de uma consulta SQL de um banco de dados MySQL.

Neste exemplo vamos criar um tela de consulta de dados para a seguinte tabela;tabela01

Criando e personalizando o JTable

  1. Inicie um no projeto no NetBeans e crie um JFrame.
  2. Acrescente um JTable (Tabela) no JFrame criado.
  3. Clique com o botão direito do mouse sobre o JTable e clique em Conteúdo da Tabelajtable01
  4. Clique na aba Colunas.
  5. Exclua a coluna 4 e mantenha as demais.
  6. Edite o título das colunas para ID, PAIS e CONTINENTE
  7. Clique agora na aba Linhas
  8. Exclua as 4 linhas brancas exibidas nesta aba
  9. Clique em Fechar.

Preparando o método

O código a seguir pode ser utilizando dentro de um método e ser chamado dentro de um botão ou durante o carregamento do JFrame.

Adicione o código deste método logo após a linha public class do seu JFrame:

public void PopularJTable(String sql) {
  try
  {
   Connection con=(Connection)DriverManager.getConnection("jdbc:mysql://10.67.48.3/bd_info2_olimpiada_lucas_duarte","aluno","etec@147");
   PreparedStatement banco = (PreparedStatement)con.prepareStatement(sql);
   banco.execute(); // cria o vetor
 
   ResultSet resultado = banco.executeQuery(sql);
 
   DefaultTableModel model =(DefaultTableModel) jTable1.getModel();
   model.setNumRows(0);
 
   while(resultado.next())
   {
       model.addRow(new Object[] 
       { 
          //retorna os dados da tabela do BD, cada campo e um coluna.
          resultado.getString("tb03_id_pais"),
          resultado.getString("tb03_nome"),
          resultado.getString("tb03_continente")
       }); 
  } 
   banco.close();
   con.close();
  }
 catch (SQLException ex)
 {
    System.out.println("o erro foi " +ex);
  }
 }

Chamando o método

Agora, sempre que necessitar deste método basta chamá-lo com o método this. Por exemplo, Adicione o método no evento windowOpened do JFrame, para isso, clique sobre o JFrame, vá na paleta Eventos e localize o evento windowOpened, dê dois cliques sobre o botão mostrado na imagem;tutorialjtable

Digite o seguinte código:

this.PopularJTable("SELECT * FROM tb03_pais ORDER BY tb03_id_pais DESC");

O código acima chama o método PopularJTable e passa para ele o sql que ele método tem que executar. Você deverá chamar este método sempre que realizar uma operação de INSERT, UPDATE ou DELETE no seu JFrame para que o JTable sempre fique atualizado após estas operações.

Porque passar o SQL por parâmetro?

O SQL está sendo passado por parâmetro para que possamos programar um busca dinâmica. Uma busca dinâmica é aquela onde o usuário digita parte da string que deseja localizar no banco e imediatamente o JTable responde com o resultado da consulta, sem a necessidade de pressionar qualquer botão para isso.

No entanto, explicarei isso em uma aula separada. Leia como utilizar este mesmo método para criar uma busca dinâmica aqui.

Pegando dados da JTable

Com a JTable já funcionando, crie agora 3 JTextField para receber os valores selecionados na JTable pelo usuário.

No evento mouseClicked do JTable, acrescente o seguinte código

 int linha = jTable1.getSelectedRow(); // retorna a linha selecionada pelo usuario
 jTxtIdPais.setText(jTable1.getValueAt(linha,0).toString()); // retorna o valor da celula linha X 0
 jTxtPais.setText(jTable1.getValueAt(linha,1).toString()); // retorna o valor da celula linha X 1
 jTxtContinente.setText(jTable1.getValueAt(linha,2).toString()); // retorna o valor da celula linha X 2

Perceba pelos comentários que a captura dos valores ocorre pela varredura da matriz model. PAra que a captura da matriz funcione, é necessário saber qual linha o usuário selecionou e o método getSelectedRow retorna isso para nós.

O resultado deste projeto será este:

jtablefinal

Ads

Anderson Oliveira

Anderson Oliveira é desenvolvedor, escritor e docente no CEETPS - Centro Estadual de Educação Tecnologia de São Paulo. Atualmente trabalha na Administração Central do CPS e leciona aulas de programação na Etec Prof. Carmine Biagio Tundisi de Atibaia.