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