Prévia do material em texto
Técnicas de Programação II MATERIAL TEÓRICO UNIDADE 5 Autoria: Prof. Me. Hugo Fernandes Revisão Textual: Prof.ª Esp. Kelciane da Rocha Campos Tela de pesquisa e Alteração com Componente JCheckBox 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. Tela de pesquisa e Alteração UNIDADE 5 Tela de Pesquisa e Alteração com Componente JCheckBox Um JCheckBox é utilizado quando mais de uma opção precisa ser verificada ou quando precisamos, de uma maneira fácil, indicar a ativação ou desati- vação de uma propriedade em uma tela de cadastro ou configuração, por exemplo. Iremos criar uma nova tabela em nosso banco de dados: PreferenciaContato. Essa tabela irá conter o nome, o número de telefone, e-mail e preferência de contato do cliente. Na tela, irá pesquisar, por meio de uma busca por nome, o cliente e exibirá o resultado em um JTable, permitirá ao usuário navegar entre os registros encontrados e, por fim, possibilitará ao usuário de nossa tela de pesquisa alterar os dados do cliente. A tela será algo parecido com a figura 1. Figura 1 − Protótipo da Tela de Pesquisa Fonte: Autor Objetivos • Desenvolver uma nova tela de pesquisa ao banco de dados; • Explorar principalmente a utilização do componente JCheckBox em conjunto com o componente JTable para criarmos uma aplicação que facilite a navegação entre registros do banco de dados, desse modo também facilitando a alteração de dados. 6 EXPLORE Crie protótipos com Balsamiq. Disponível em: https://goo.gl/Q5npZS Como nos exemplos anteriores, para que nossa aplicação possa se conectar corretamente ao banco de dados, o serviço do MySQL deve estar ATIVO. Para ati- vá-lo, basta acessar a pasta de onde o programa Uniform Ser�er foi extraído e cli- car no arquivo 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. Figura 2 − Ativando o Serviço de Banco de Dados Fonte: Autor Em seguida, minimize o programa, 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 um Novo 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 seguida selecione a opção Novo/Form JFrame. Na tela seguinte, digite no campo “Nome da Classe”: PreferenciaContato. Em seguida, clique em Finalizar. 7 Tela de pesquisa e Alteração UNIDADE 5 Figura 3 – Inserindo um Novo Form ao Projeto Fonte: Autor 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. De volta à tela de design, clique com o botão direito do mouse em cima do Frame e selecione a opção “Definir Layout/Design Livre”. EXPLORE Teclas de atalho e modelos de código: Disponível em: https://goo.gl/vujUn4 Figura 4 − Configurando o Layout do Form Fonte: Autor 8 Arraste para dentro do Form um componente de texto (JtextField), um compo- nente de botão (JButton) e um JTable. Na sequência, altere a propriedade de texto do componente de texto. Para isso, clique com o botão direito do mouse sobre o componente e selecione a opção “Edi- tar texto” e apague o texto. Altere também a propriedade de texto do botão, para o botão digite “Pesquisar”. Em seguida, altere o nome de variável dos componentes conforme a tabela abaixo. Quadro 1 Componente Nome da Variável Propriedade Texto JTextField txtPesquisa Apagar texto padrão JButton Não alterar Pesquisar JTable tblPesquisa - Nosso Form deve ficar parecido com a Figura 5. Figura 5 − Configurando o Form Fonte: Autor Faremos agora as configurações do JTable. Para isso, clique com o botão direito do mouse sobre o JTable e selecione a opção “Conteúdo da tabela”. Em seguida, acesse a aba “Coluna”. Insira na propriedade “Contagem” o número 5, isso fará com que seja adicionada mais uma coluna. Renomeie o título de cada coluna para: Nome; Telefone; Email; EnvMail e EnvSMS. 9 Tela de pesquisa e Alteração UNIDADE 5 Figura 6 − Renomeando Colunas Fonte: Autor Feito isso, clique na aba “Linha”, selecione as linhas existentes e as exclua. Figura 7 − Excluindo as Linhas do JTable Fonte: Autor Adicionaremos agora os campos que receberão os dados quando o usuário sele- cionar algum registro no JTable. A partir desses campos, iremos criar um código para alterar o registro no banco de dados. Para isso, arraste para o Form, logo abaixo do JTable, 3 JTextField e 1 JButton. Nosso Form deve ficar parecido com a Figura 8. 10 Figura 8 − Configurando o Form Fonte: Autor Em seguida, arraste para o Form um componente JCheckBox (Caixa de Seleção). Faça isso 2 vezes. Figura 9 − Componente JCheckBox Fonte: Autor Agora altere as propriedades de nome de variável e texto dos componentes con- forme a tabela abaixo. 11 Tela de pesquisa e Alteração UNIDADE 5 Quadro 2 Componente Nome da Variável Propriedade Texto JTextField txtNome Apagar texto padrão JTextField txtTel Apagar texto padrão JTextField txtEmail Apagar texto padrão JCheckBox ckbEmail - JCheckBox ckbSMS - JButton Não alterar Alterar Na Figura 10, podemos visualizar a disposição de cada componente, bem como seu nome de variável. Figura 10 − Disposição de Componentes e Nomes de Variável Fonte: Autor Em seguida, arraste componentes JLabel e altere a propriedade de texto de cada componente, conforme podemos ver na Figura 11. Figura 11 − Disposição de Componentes JLabel Fonte: Autor 12 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 12 Fonte: Autor 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 Preferen- ciaContato, escreva o seguinte código: public ResultSet rs; Connection conn; Figura 13 Fonte: Autor Estamos criando essas variáveis nesse ponto do código para que possamos, desse modo,utilizar e compartilhar o valor contido nessas variáveis em todo o código. Denominamos as variáveis criadas nesse ponto como variáveis globais. 13 Tela de pesquisa e Alteração UNIDADE 5 EXPLORE Variável local e global: https://youtu.be/awaMjuA-hkU Criaremos agora um método para criação da tabela PreferenciaContato. Esse mé- todo será responsável pela criação e inserção de dados na tabela PreferenciaContato. Para isso, logo abaixo do método PreferenciaContato(), digite o seguinte código: public void criaTabelaPreferenciaContato() { String SQLCreate = “CREATE TABLE `TBL_PreferenciaContato` (\n” + “Nome varchar(256), Telefone varchar(11),\n” + “Email varchar(256),EnvMail varchar(1),EnvSMS varchar(1))”; try { Class.forName(“com.mysql.jdbc.Driver”); Statement stmt; conn = DriverManager.getConnection(“jdbc:mysql://localhost/minhadb”, “root”, “root”); stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE); stmt.executeUpdate(SQLCreate); stmt.executeUpdate(“insert into TBL_PreferenciaContato” + “ values (‘Hugo Fernandes’, ‘11912342356’,’hugo@msn.com’,” + “’S’,’N’)”); stmt.executeUpdate(“insert into TBL_PreferenciaContato” + “ values (‘Maria da Silva’, ‘11912342389’,’maria@msn.com’,” + “’N’,’N’)”); stmt.executeUpdate(“insert into TBL_PreferenciaContato” + “ values (‘Gilberto Gonçalves’, ‘11912342374’,’gil@msn.com’,” + “’S’,’S’)”); stmt.close(); JOptionPane.showMessageDialog(null, “Tabela criada com sucesso!”); } catch (ClassNotFoundException e) { System.out.println(e); } catch (SQLException e) { System.out.println(e); } } 14 Figura 14 Fonte: Autor Analisando o Código Linha 27 – cria a assinatura do nosso método void. Nessa linha indicamos o nome do método (criaTabelaPreferenciaContato) e definimos que o método não terá parâmetros de entrada. Linha 29 – cria uma variável chamada SQLCreate, na qual atribuímos o co- mando SQL para criação da tabela Cidades (TBL_PreferenciaContato). Linha 33 – esse comando registra a Classe do Driver JDBC. Linha 34 – cria uma variável do tipo Statement de nome stmt. Linha 35 – atribui à variável do tipo Connection os parâmetros de endereço, usuário e a senha do banco de dados. Linha 37 – inicializa a variável Statement, é por meio dessa variável que executaremos operações no banco de dados de atualização. Linha 39 – executa a variável Statement, desse modo executando a instrução SQL para criação da tabela. Linha 40 a 48 – executa a variável Statement tendo como parâmetro de execução instruções SQL de insert. Linha 49 – encerra a variável Statement. Linha 50 – exibe uma mensagem na tela. Linhas 53 – caso ocorra alguma exceção, o sistema exibe o erro. 15 Tela de pesquisa e Alteração UNIDADE 5 Só é necessário invocar o método para criação da tabela uma vez, ou seja, quan- do a tabela PreferenciaContato ainda não existir no banco de dados. Para que o sistema possa identificar esse cenário, devemos criar um método que verifica se a tabela PreferenciaContato existe no banco de dados, caso não exista o método de criação será invocado. Para isso, logo após o final do método criaTabelaPreferen- ciaContato, digite o seguinte código: public void testeTabela() { 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); try { stmt.executeQuery(“Select nome from TBL_PreferenciaContato”); } catch (SQLException e) { criaTabelaPreferenciaContato(); } } catch (ClassNotFoundException e) { System.out.println(e); } catch (SQLException e) { System.out.println(e); } } Figura 15 Fonte: Autor 16 Analisando o código Linha 60 – cria a assinatura do nosso método void. Nessa linha indicamos o nome do método (testeTabela) e definimos que o método não terá parâmetros de entrada. Linha 62 – cria uma variável do tipo Statement de nome stmt. Linha 64 – esse comando registra a Classe do Driver JDBC. Linha 65 – atribui à variável do tipo Connection os parâmetros de endereço, usuário e a senha do banco de dados. Linha 67 – inicializa a variável Statement, é por meio dessa variável que executaremos operações no banco de dados de atualização. Linha 69 – abre um bloco “tr�”. Linha 70 – executa a variável Statement e caso haja algum erro será executada a linha 72. É importante observar que a linha 70 executa uma instrução SQL que seleciona dados da tabela PreferenciaContato, porém, caso a tabela ainda não exista no banco de dados, irá ocorrer um erro. É dessa maneira que nossa aplicação irá identificar se existe ou não a necessidade de se invocar o método para criação da tabela Pre- ferenciaContato. EXPLORE Try Catch: https://youtu.be/7zfwZonK2IE Agora devemos fazer com que nossa aplicação invoque o método de teste da ta- bela PreferenciaContato toda vez que a aplicação for executada. Esse procedimento fará com que nossa aplicação verifique se existe ou não a tabela e caso a tabela não exista, a tabela será criada. Para codificar esse evento, clique com o botão direito do mouse sobre uma parte vazia do Form, em seguida selecione a opção Propriedade. Na aba Eventos, localize a propriedade WindowOpened, clique na seta e em seguida clique na opção FormWindowOpened. Esse processo irá criar o método do evento WindowOpened. 17 Tela de pesquisa e Alteração UNIDADE 5 Figura 16 – Criando o método FormWindowOpened Fonte: Autor Figura 17 – Selecionando o Método FormWindowOpened Fonte: Autor 18 Em seguida, acesse o código-fonte e digite o seguinte código: testeTabela(); Figura 18 Fonte: Autor Analisando esse código, temos na linha 277 a chamada do método testeTabela, onde testamos a existência da tabela PreferenciaContato. Exibindo o Resultado na tela Agora iremos criar o método responsável por exibir o resultado da pesquisa no banco de dados por meio do componente JTable. Digite o seguinte código: public void pesquisa(String paramBusca) { String SQLpesqusa = "Select * from TBL_PreferenciaContato" + 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); String vEnvEmail = null; String vEnvSMS = null; while (rs.next()) { if (rs.getString("EnvMail").equals("S")) { vEnvEmail = "Sim"; } else { vEnvEmail = "Não"; } if (rs.getString("EnvSMS").equals("S")) { vEnvSMS = "Sim"; } else { vEnvSMS = "Não"; 19 Tela de pesquisa e Alteração UNIDADE 5 } model.addRow(new Object[]{ //retorna os dados da tabela do BD, cada campo e um coluna. rs.getString("Nome"), rs.getString("Telefone"), rs.getString("Email"), vEnvEmail, vEnvSMS }); } rs.close(); } catch (ClassNotFoundException e) { System.out.println(e); } catch (SQLException e) { System.out.println(e); } } Figura 19 Fonte: Autor 20 Analisando o Código Linha 83 – cria a assinatura do nosso método void. Nessa linha indicamos o nome do método (Pesquisa) e definimos que o método terá um (1) parâmetro do tipo String. Linha 85 – cria uma variável 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 86 – cria uma variável do tipo Statement de nomestmt. Linha 88 – esse comando registra a Classe do Driver JDBC. Linha 89 – atribui à variável do tipo Connection os parâmetros de endereço, usuário e a senha do banco de dados. Linha 91 – inicializa a variável Statement, é por meio dessa variável que execu- taremos operações no banco de dados de atualização. Linha 93 – executa instrução SQL e atribui resultado a uma variável ResultSet. Linha 94 – 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 95 – apaga todas as linhas do JTable. Linha 96 – cria uma variável String com nome “vEnvEmail” e atribui o valor nulo. Linha 97 – cria uma variável String com nome “vEnvSMS” e atribui o valor nulo. Linha 99 – 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. Em nossa tabela PreferenciaContato, para indicar a preferência do contato pelo cliente, utilizamos os campos “EnvMail” e “EnvSMS”. Quando o cliente deseja que o contato seja enviado por e-mail, gravamos “S” no campo “EnvMail”, quando não, gravamos “N”. Essa mesma lógica é utilizada para contato via SMS. Sabendo disso, entre as linhas 101 e 110 nosso código irá verificar o que está gravado no banco de dados e de acordo com o valor gravado (“S” ou “N”), será adicionado um valor às variáveis que foram criadas nas linhas 96 e 97. Linha 101 – nessa linha o código verifica se o valor do campo “EnvMail” é “S”. Caso o valor seja de fato “S”, a linha 102 será executada; caso contrário, a linha 104 será executada. A mesma lógica é aplicada para o campo “EnvSMS” entre as linhas 106 e 110. Linha 112 – cria uma nova linha no JTable atribuindo um array do tipo objeto cujo valores são descritos entre as linhas 114 e 118. Linha 121 – encerra a variável ResultSet. 21 Tela de pesquisa e Alteração UNIDADE 5 Concluído esse método, iremos codificar o evento do botão Pesquisar. Esse evento irá invocar o método de pesquisa. Para isso, clique com o botão direito do mouse sobre o botão Pesquisar, passe o cursor do mouse sobre a opção Eventos, em seguida Action e, por fim, selecione actionPerformed. Figura 20 – Criando o Evento ActionPerformed Fonte: Autor No método criado, digite o seguinte código: String SQLText = “”; if (txtPesquisa.getText() != null) { SQLText = “ where upper(nome) like ‘” + txtPesquisa.getText() + “%’”; } pesquisa(SQLText); Figura 21 Fonte: Autor 22 Analisando o código Linha 267 – cria uma variável String e atribui o valor nulo. Linha 228 – nessa estrutura de decisão é verificado se o JTextField possui algum valor digitado. Caso não seja vazio, a linha 269 será executada. Linha 269 – atribui à variável String uma instrução SQL (where) concatenando com o valor que o usuário digitou no JTextField. Linha 272 – invoca o método de pesquisa passando como parâmetro a variável String (SQLtext). Passo 3: Escrevendo o Código para Alterar os Dados Nossa aplicação deve ser capaz de identificar quais são os registros seleciona- dos no JTable, em seguida permitir que esses registros sejam alterados no banco de dados. Para isso, primeiro iremos codificar o evento do clique do mouse sobre o JTable, por meio desse evento iremos “pegar” os dados selecionados pelo usuário. Para isso, clique com o botão direito do mouse sobre o JTable, na propriedade Eventos, e selecione Mouse>mouseClicked. Figura 22 – Criando Método MouseClicked Fonte: Autor 23 Tela de pesquisa e Alteração UNIDADE 5 No método, digite o seguinte código: int linha = tblPesquisa.getSelectedRow(); txtNome.setText(tblPesquisa.getValueAt(linha, 0).toString()); txtTel.setText(tblPesquisa.getValueAt(linha, 1).toString()); txtEmail.setText(tblPesquisa.getValueAt(linha, 2).toString()); ckbEmail.setSelected(tblPesquisa.getValueAt(linha, 3).equals(“Sim”)); ckbSMS.setSelected(tblPesquisa.getValueAt(linha, 4).equals(“Sim”)); Figura 23 Fonte: Autor Analisando o Código Linha 282 – cria uma variável do tipo int e atribui o valor contido na proprie- dade getSelectedRow() do JTable. Essa propriedade indica o índice da linha que o usuário está selecionando com o mouse. Linha 283 a 285 – atribui ao componente de texto o valor contido na célula selecionada 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. Linha 286 – o método “setSelected” recebe um parâmetro boolean. Quando o valor recebido é “true”, o componente JCheckBox é marcado; caso contrário, o com- ponente é desmarcado. O método “equals” retorna um valor boolean; nesse caso, se o registro selecionando for igual a “SIM”, o método retorna “true”, caso contrário retornará “false”. A mesma lógica é utilizada na linha 287. Por fim, iremos criar o código responsável por alterar os dados do registro se- lecionado no JTable. Para isso, clique com o botão direito do mouse sobre o botão Pesquisar, passe o cursor do mouse sobre a opção Eventos, em seguida Action e, por fim, selecione actionPerformed. 24 Figura 24 – Criando o evento ActionPerformed do botão alterar Fonte: Autor No método criado, digite o seguinte código: Statement stmt; String vEnvEmail = null; if (ckbEmail.isSelected()) { vEnvEmail = "S"; } else { vEnvEmail = "N"; } String vEnvSMS = null; if (ckbSMS.isSelected()) { vEnvSMS = "S"; } else { vEnvSMS = "N"; } 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_UPDATABLE); String sql = "UPDATE TBL_PreferenciaContato SET telefone=" + "'" + txtTel.getText() + "'," + "email='" + txtEmail.getText() + "'," + "EnvMail='" + vEnvEmail + "'," 25 Tela de pesquisa e Alteração UNIDADE 5 + "EnvSMS='" + vEnvSMS + "'" + " where nome=" + "'" + txtNome.getText() + "'"; JOptionPane.showMessageDialog(null, sql); int i = 0; i = stmt.executeUpdate(sql); stmt.close(); if (i > 0) { JOptionPane.showMessageDialog(null, "Registro alterado com sucesso!"); jButton1ActionPerformed(evt); } } catch (ClassNotFoundException e) { System.out.println(e); } catch (SQLException e) { System.out.println(e); } Figura 25 Fonte: Autor 26 Analisando o Código Linha 292 – cria uma variável do tipo Statement de nome stmt. Linha 294 – cria uma variável do tipo string com o nome vEnvEmail e atribui a ela o valor nulo. Linha 295 – se o componente JCheckBox Email estiver marcado, a linha 296 será executada; caso contrário, a linha 298 será executada. O valor contido nessa variável será utilizado para alterar o valor do campo EnvEmail na tabela TBL_Pre- ferenciaContato. A mesma lógica é utilizada para o campo EnvSMS entre as linhas 301 e 306. Linha 309 – esse comando registra a Classe do Driver JDBC. Linha 310 – atribui à variável do tipo Connection os parâmetros de endereço, usuário e a senha do banco de dados. Linha 312 – inicializa a variável Statement, é por meio dessa variável que executaremos operações no banco de dados de atualização. Linha 314 – cria a instrução SQL de Insert. Linha 320 – para fins didáticos, exibimos o conteúdo da variável string (SQL) em um JOptionPane. Linha 322 – executa instrução SQL e atribui resultado a uma variável int. Linha 325 – se i for maior do que zero, significa que a instrução SQL foi executada corretamente, assim é exibida uma mensagem de sucesso. Linhas 330 e 332 – caso ocorra alguma exceção, o sistema exibe o erro. Passo 4: Testando a Aplicação Para testar nossa aplicação, devemos configurar a classe principal de nosso projetoJava. 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. 27 Tela de pesquisa e Alteração UNIDADE 5 Figura 26 – Acessando as Propriedades do Projeto Java Fonte: Autor Na tela de propriedades, selecione a categoria Executar. No campo “Classe principal”, clique no botão Procurar. Em seguida, selecione a classe PreferenciaContato. Figura 27 – Propriedades do Projeto Java Fonte: Autor 28 Por fim, clique no menu Executar/Criar Projeto ou F11. Em seguida, pressione F6 ou clique no menu Executar/ Executar Projeto. Figura 28 – Testando a aplicação Fonte: Autor Figura 29 – Testando a Aplicação Fonte: Autor 29 Tela de pesquisa e Alteração UNIDADE 5 Figura 30 – Testando a Aplicação Fonte: Autor Figura 31 – Testando a aplicação Fonte: Autor Com isso concluímos os estudos desta unidade. Até breve! 30 Material Complementar Indicações para saber mais sobre os assuntos abordados nesta Unidade: Sites Terminal de Informação Entendendo os Principais Componentes de um JFrame. https://goo.gl/JRDFcs Vídeos Tecnoplay TV Tutorial Java - Como usar a caixa de seleção jCheckBox. https://youtu.be/a2oebeo119A JPM Software Aula Java 87 - Programa Interface Gráfica com Usuário JCheckBox https://youtu.be/wvFl6MxA6Zc JTable con CheckBox https://youtu.be/_LywyuL8y3Y 31 Tela de pesquisa e Alteração UNIDADE 5 Referências GONÇALVES, Edson. Dominando NetBeans. Ciência Moderna, 2006. HEFFELFINGER, David R. Java EE 7 Development with NetBeans 8. Packt Publishing Ltd, 2015. NETBEANS IDE. Disponível em: <http:// netbeans. org>. Acesso em: 20 set. 2018. 32