Prévia do material em texto
Técnicas de Programação II MATERIAL TEÓRICO UNIDADE 3 Autoria: Prof. Me. Hugo Fernandes Revisão Textual: Prof.ª Dr.ª Luciene Oliveira da Costa Granadeiro Desenvolvendo uma Tela de Pesquisa com JTable Não se esqueça de se alimentar e de se manter hidratado. Conserve seu material e local de estudos sempre organizados. Procure manter contato com seus colegas e tutores para trocar ideias! Isso amplia a aprendizagem. Seja original! Nunca plagie trabalhos. Determine um horário fixo para estudar. Aproveite as indicações de Material Complementar. Mantenha o foco! Evite se distrair com as redes sociais. Orientações de estudo Para que o conteúdo desta Disciplina seja bem aproveitado e haja maior aplicabilidade na sua formação acadêmica e atuação profissional, siga algumas recomendações básicas: Assim: Organize seus estudos de maneira que passem a fazer parte da sua rotina. Por exemplo, você poderá determinar um dia e horário fixos como seu “momento do estudo”; Procure se alimentar e se hidratar quando for estudar; lembre-se de que uma alimentação saudável pode proporcionar melhor aproveitamento do estudo; No material de cada Unidade, há leituras indicadas e, entre elas, artigos científicos, livros, vídeos e sites para aprofundar os conhecimentos adquiridos ao longo da Unidade. Além disso, você também encontrará sugestões de conteúdo extra no item Material Complementar, que ampliarão sua interpretação e auxiliarão no pleno entendimento dos temas abordados; Após o contato com o conteúdo proposto, participe dos debates mediados em fóruns de discussão, pois irão auxiliar a verificar o quanto você absorveu de conhecimento, além de propiciar o contato com seus colegas e tutores, o que se apresenta como rico espaço de troca de ideias e de aprendizagem. Desenvolvendo uma Tela de Pesquisa com JTable UNIDADE 3 Objetivos • Desenvolver uma tela de pesquisa ao banco de dados, utilizando um componente da API SWING chamado JTable. Desenvolvendo uma Tela de Pesquisa com JTable Nesta unidade, iremos desenvolver uma tela de pesquisa ao banco de dados utilizando componen- tes da API SWING. Para isso, iremos utilizar a base de dados que manipulamos na unidade anterior. Diferentemente de exemplos anteriores, iremos utilizar agora um componente da API SWING cha- mado JTable. Utilizamos esse componente para exi- bir dados em formato bidimensionais, ou seja, dados organizados em linhas e colunas, bem semelhante a uma planilha. EXPLORE Estruturas de dados multimensional: https://goo.gl/FLk1Vm. O objetivo da tela que iremos desenvolver nesta unidade é pesquisar dados da tabela curso, com pos- sibilidade de filtro por nome do curso e exibir o resul- tado em uma tabela. Para seguirmos adiante, destacamos que, para nossa aplicação poder se conectar corretamente ao banco de dados, o serviço do MySQL deve estar ATI- VO. Para ativá-lo, basta acessar a pasta onde o pro- grama Uniform Server foi extraído e clicar no arqui- vo UniController. Ative o serviço MySQL clicando no botão Start MySQL. Se o serviço for inicializado com sucesso, o quadro ao lado do botão ficará verde. 6 Figura 1 – Ativando o serviço de banco de dados Em seguida, minimize o programa, pois isso fará com que ele vá para a bandeja do Windows. Com o serviço MySQL ativo em nosso computador, podemos começar o nosso passo a passo para desenvolver nossa tela de pesquisa. Passo 1: Criando o Form e adicionando os componentes visuais da tela de Pesquisa Abra o NetBeans, e acesse o projeto Java criado na unidade de estudo anterior (APPSelect). Clique no nome do projeto com o botão direito do mouse e, em se- guida, selecione a opção Novo/Form JFrame. Na tela seguinte, digite no campo “Nome da Classe”: PesquisaCurso. Em seguida, clique em Finalizar. Figura 2 – Inserindo um novo Form ao projeto 7 Desenvolvendo uma Tela de Pesquisa com JTable UNIDADE 3 Em seguida, clique em qualquer lugar vazio do Frame com o botão direito do mouse e selecione a opção “Propriedades”. Na aba Código, selecione a opção Gerar Código de redimensionamento no campo Política de Tamanho de Form e marque a opção do campo “Gerar Código de redimensionamento”. Feito isso, clique no botão Fechar. Figura 3 – Configurando redimensionamento do Form De volta à tela de design, clique com o botão direito do mouse em cima do Frame e selecione a opção “Definir Layout/Layout Nulo”. Figura 4 – Configurando o layout do Form 8 Agora arraste um Label e também um Campo de Texto para dentro do Form. Redimensione o Campo de Texto e altere seu nome de variável – para isso, clique com o botão direito do mouse sobre o campo de texto e escolha a opção “Alterar o Nome da Variável” e escreva: txtNmCurso. Figura 5 – Alterando o nome da variável Adicione também um botão ao Form. Redimensione o botão e altere seu texto para “Pesquisar” – para afazer isso, clique com o botão direito do mouse sobre o botão e escolha a opção Alterar Texto. Em seguida, altere o nome da variável para “btnPesquisar”. Figura 6 – Alterando o nome do botão Agora, iremos adicionar o componente JTable. Para isso, localize o componente Tabela e arraste para a parte inferior do Form. 9 Desenvolvendo uma Tela de Pesquisa com JTable UNIDADE 3 Figura 7 – Adicionando o componente JTable Redimensione o componente arrastando pelas bordas. Figura 8 – Redimensionando o componente JTable Em seguida, clique com o botão direito do mouse sobre o JTable e selecione a opção “Conteúdo da tabela”. 10 Figura 9 – Redimensionando o componente JTable Acesse a aba “Coluna” e exclua a quarta linha. Figura 10 – Redimensionando o componente JTable Ainda nessa aba, altere os valores de cada célula da coluna “Título”. Renomeie o valor “Title 1” para Sigla; “Title 2” para Nome e “Title 3” para Descricao. Perceba aqui que esses nomes são justamente os nomes das colunas em nossa tabela Curso no banco de dados. Ou seja, para que os dados sejam exibidos corretamente, devemos configurar para cada título o nome do campo da tabela do banco de dados que iremos exibir no componente JTable. 11 Desenvolvendo uma Tela de Pesquisa com JTable UNIDADE 3 Figura 11 – Renomeando as células de título Feito isso, clique na aba “Linha”, selecione as 4 linhas existentes e as exclua. Figura 12 – Renomeando as células de título O resultado de nossa organização gráfica dos componentes deve ser igual ao da imagem a seguir. 12 Figura 13 – Renomeando as células de título Por fim, para concluirmos essa etapa, altere o nome de variável do componente JTable – para isso, clique com o botão direito do mouse sobre o campo de texto e escolha a opção “Alterar o Nome da Variável” e escreva: tblPesquisa. Figura 14 – Renomeando o nome da variável 13 Desenvolvendo uma Tela de Pesquisa com JTable UNIDADE 3 Passo 2: Escrevendo o código de busca no banco de dados Acesse a área do código-fonte e, logo no início da classe, digite o seguinte código: import javax.swing.*; import java.sql.*; import javax.swing.table.DefaultTableModel; Figura 15 Esse código importa as classes da javax.Swing, java.sql e do componente table. Em seguida, logo abaixo da linha de código da construção da Classe Pesquisa- Curso, escreva o seguinte código: public ResultSet rs; Connection conn; Figura 16 14 Analisando esse código, na linha 19, criamos uma variável pública do tipo ResultSet. É por meio dessa variável que a aplicação irá receber e guardar em tempo de execução as informações vindas do banco de dados. Na linha 20, criamos uma variável do tipo Connection. É por meio dessa variável que iremos criar uma conexão entre a aplicação e o banco de dados. Estamos criando essas variáveis nesse ponto do código para podermos, desse modo, utilizar e compartilhar o valor contido nessas variáveis em todo o código. Nossa próxima tarefa será a criação de um método void para preencher nosso componente JTable. Esse método recebe como parâmetro uma string que utilizaremos para acondição da pesquisa SQL. EXPLORE O que são métodos, qual sua utilidade e quando usá-los: https://goo.gl/YQdLcY. Logo abaixo do método public PesquisaCurso(), digite o seguinte código: public void pesquisaCidade(String paramBusca) { String SQLpesqusa = “Select * from Curso” + paramBusca; Statement stmt; try { Class.forName(“com.mysql.jdbc.Driver”); conn = DriverManager.getConnection(“jdbc:mysql:// localhost/minhadb”, “root”, “root”); stmt = conn.createStatement(ResultSet.TYPE_ SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY); rs = stmt.executeQuery(SQLpesqusa); DefaultTableModel model = (DefaultTableModel) tblPesquisa.getModel(); model.setNumRows(0); while (rs.next()) { (cont.) 15 Desenvolvendo uma Tela de Pesquisa com JTable UNIDADE 3 model.addRow(new Object[]{ //retorna os dados da tabela do BD, cada campo e um coluna. rs.getString(“Sigla”), rs.getString(“Nome”), rs.getString(“Descricao”) }); } rs.close(); } catch (ClassNotFoundException e) { System.out.println(e); } catch (SQLException e) { System.out.println(e); } } Figura 17 16 Analisando o Código Linha 27 – Cria a assinatura do nosso método void. Nessa linha, indicamos o nome do método (PesquisaCidade) e definimos que o método terá um (1) parâme- tro do tipo String. Linha 29 – Cria uma variavél chamada SQLpesquisa na qual atribuímos o co- mando SQL para busca de dados (select) e concatenamos com o valor que chega por meio do parâmetro do método. Linha 30 – Cria uma variável do tipo Statement de nome stmt. Linha 32 – Esse comando registra a Classe do Driver JDBC. Linha 33 – Atribui à variável do tipo Connection, os parâmetros de endereço, usuário e a senha do banco de dados. Linha 35 – Inicializa a variável Statement, é por meio dessa variável que exe- cutaremos operações no banco de dados de atualização. Linha 37 – Executa instrução SQL e atribui resultado a uma variável ResultSet. Linha 38 – Cria um objeto do tipo DefaultTableModel com o nome de model e, na sequência, atribui o valor da propriedade model contido no componente JTable. Linha 39 – Apaga todas as linhas do JTable. Linha 41 – Inicia a estrutura de repetição While. A quantidade de repetições do While será igual à quantidade de LINHAS resultante da busca no banco de dados. Linha 42 – Cria uma nova linha no JTable atribuindo um array do tipo objeto, cujo valores são descritos nas linhas 44, 45 e 46. Linha 49 – Encerra a variável Statement. Linhas 51 e 53 – Caso ocorra alguma exceção, o sistema exibe o erro. O próximo passo será criar um evento para o botão Pesquisar, para que, desse modo, ao clicar no botão, execute o método que acabamos de escrever. Para isso, dê duplo clique sobre o botão Pesquisar. Essa ação cria o método ActionPerformed. Feito isso, somos direcionados para a área de codificação. Digite o seguinte código: String SQLText = “”; if (txtNmCurso.getText() != null) { SQLText = “ where upper(nome) like ‘” + txtNmCurso.getText() + “%’”; } pesquisaCidade(SQLText); 17 Desenvolvendo uma Tela de Pesquisa com JTable UNIDADE 3 Figura 18 Linha 108 – Cria uma variável do tipo String e atribui o valor vazio a ela. Linha 109 – Inicia a instrução da estrutura condicional simples (IF). A condição é: caso o campo de texto da busca esteja diferente de nulo, atribua o valor descrito na linha 110 e 111. O valor atribuído é uma instrução SQL “Where”, utilizando o comando “Like” para buscar, no campo Nome da tabela Curso, cursos que começam com as letras que o usuário preencher no campo texto de nossa aplicação. Linha 113 – Invoca o método pesquisaCidade, passando como parâmetro a variável String SQLText. EXPLORE MySQL Like – Como fazer uma busca com Like: https://goo.gl/afX9bV. Testando a aplicação Para testar nossa tela de pesquisa, devemos antes configurar a classe principal de nosso projeto Java. Ou seja, a classe que será executada em primeiro lugar ao executar o projeto na IDE Netbeans. Para isso, clique com o botão direito do mouse sobre o nome do projeto e selecione a opção Propriedades. Figura 19 – Acessando as propriedades do projeto Java 18 Na tela de propriedades, selecione a categoria Executar. No campo “Classe principal”, clique no botão Procurar. Figura 20 – Propriedades do projeto Java Selecione a classe PesquisaCurso. Figura 21 – Selecionando a classe principal do projeto Por fim, clique no menu Executar/Criar Projeto ou F11. Em seguida, pressione F6 ou clique no menu Executar/ Executar Projeto. Ao abrir a aplicação, clique no botão Pesquisar. Figura 22 – Testando a tela de pesquisa 19 Desenvolvendo uma Tela de Pesquisa com JTable UNIDADE 3 Teste a busca digitando o começo do nome do curso. Por exemplo, “Ge”. Figura 23 – Testando a tela de pesquisa com busca por nome Passo 3: Capturando as informações selecionadas no JTable Nesta etapa, iremos capturar as informações que o usuário seleciona ao navegar pelos registros do JTable. Para testar, iremos adicionar 3 componentes de texto em nossa tela. Adicione os componentes como na imagem abaixo. Figura 24 – Adicionando componentes de texto 20 Em seguida, altere os nomes das variáveis para: • txtSigla; • txtNome; • txtDescricao. Agora, iremos configurar o evento do JTable, que será executado sempre que o usuário da aplicação clicar em um registro. Para isso, clique com o botão direito do mouse sobre o JTable, na propriedade Eventos, selecione Mouse>mouseClicked. EXPLORE Os principais construtores e métodos da classe JTable: https://goo.gl/9mztof. Figura 25 – Criando método mouseClicked No método, digite o seguinte código: int linha = tblPesquisa.getSelectedRow(); txtSigla.setText(tblPesquisa.getValueAt(linha, 0).toString()); txtNome.setText(tblPesquisa.getValueAt(linha, 1).toString()); txtDescricao.setText(tblPesquisa.getValueAt(linha, 2).toString()); Figura 26 21 Desenvolvendo uma Tela de Pesquisa com JTable UNIDADE 3 Analisando o Código Linha 157 – Cria uma variável do tipo int e atribui o valor contido na propriedade getSelectedRow() do JTable. Essa propriedade indica o índice da linha que o usuário está selecionando com o mouse. Linha 158 a 160 – Atribui ao componente de texto o valor contido na célula selecionado no JTable. Para isso, utilizamos a propriedade getValueAt passando como parâmetro, primeiro, o índice da linha e, segundo, o índice da coluna do JTable. Para testar, clique no menu Executar/Criar Projeto ou F11. Em seguida, pres- sione F6, ou clique no menu Executar/ Executar Projeto. Figura 27 – Exibindo os registros selecionados do JTable Agora, ao selecionar com o mouse algum registro do JTable, as informações do registro são exibidas nos campos de texto. 22 Material Complementar Indicações para saber mais sobre os assuntos abordados nesta Unidade: Sites Assistência de Código no Editor Java do NetBeans IDE: Um Guia de Referência https://goo.gl/gJcH2i Criando um cliente MySQL simples no NetBeans https://goo.gl/hyuQrh Trabalhando com JTable e Banco de Dados no Java https://goo.gl/EZjH29 Vídeos Carregando JTable com registro de banco de dados usando ArrayList [JTable] https://youtu.be/_XtR56iXRdM 23 Desenvolvendo uma Tela de Pesquisa com JTable UNIDADE 3 Referências GONÇALVES, E. Dominando NetBeans. Ciência Moderna, 2006. HEFFELFINGER, D. R. Java EE 7 Development with NetBeans 8. Packt Publishing Ltd, 2015. NETBEANS, I. D. E. Netbeans. Disponível em< http://www. netbeans.org>. Acesso em Junho de 2018. 24 São Paulo 2018