Prévia do material em texto
- -1 PROGRAMAÇÃO ORIENTADA A OBJETOS TRATAMENTO DE EVENTOS DE MANIPULAÇÃO DE TEXTOS - -2 Olá! Nesta aula, você irá: 1. Compreender a manipulação de eventos de texto, frequentemente relacionados à validação de caracteres inseridos através do teclado. 2. Utilizar eventos de listas, tornando as interfaces gráficas mais intuitivas. Tratamento de eventos em Java Quase todos os componentes propagam eventos. Estes eventos devem ser tratados em algum ponto do código da aplicação. Os eventos nunca são tratados no próprio componente (dado que não se tem acesso ao código do componente). Para ligar o código do tratamento de eventos ao componente existem, no Java, um conjunto de interfaces chamadas listeners. Um listener é uma interface que especifica os métodos que uma aplicação deve ter para ser notificada da ocorrência de um determinado evento. Os componentes que geram eventos permitem que sejam adicionados ou removidos listeners em qualquer altura. Os Eventos Prontos - -3 Aprendendo na prática Vamos implementar um programa simples para preencher uma lista. Este programa utilizará uma lista de itens para receber os elementos, um jtextfield que é o responsável pela entrada dos valores e pelos botões Coloca e Retira, um para colocar o texto digitado na caixa de texto na lista e o outro para retirar os elementos selecionados. Também colocamos um jLabel para apresentar as mensagens – jLabel2. A colocação ou disposição dos componentes, utilizar um gerenciador de leiaute a sua escolha, dentre os vistos na aula 2. Caso queira, utilize a estrutura de design do NetBeans. A Interface TextListener - -4 Eventos de texto são gerados quando um texto em um componente foi alterado de alguma forma. Este evento funciona apenas com componentes textfields e textarea da biblioteca AWT. Este tratamento é feito da seguinte forma: • Adicionamos o TextListener no objeto texto, que é um TextField; • Criamos o objeto que irá tratar este evento, instanciando um objeto TextListener para implementar o método de tratamento; • Implementamos o método textValueChanged, que é o método de tratamento invocado. Abaixo, o código pronto: texto.addTextListener(new java.awt.event.TextListener() { public void textValueChanged(TextEvent e) { trataMudancaTexto(e); } }); private void trataMudancaTexto(TextEvent e) { jLabel2.setText("Texto do texto Mudou!> "); } A Interface KeyListener • • • Fique ligado É válido observar que podemos passar o evento para o método de tratamento. Neste nosso exemplo, nada faremos com o evento, mas poderíamos usar este objeto para refinar a programação ou controle. - -5 Esta interface efetua o tratamento de eventos para teclas pressionadas. São disponibilizados três métodos de tratamento para os diferentes comportamentos possíveis para o evento de apertar uma tecla. São eles: Segue o código para o tratamento deste evento no nosso exemplo. Nesta alteração, foi adicionado um listener para o campo jTextField1 para analisar as teclas digitadas. Como podemos observar, não estamos tratando os eventos de KeyPressed e KeyReleased. jTextField1.addKeyListener(new java.awt.event.KeyListener() { public void keyTyped(KeyEvent e) { TrataTecladigitada(); } public void keyPressed(KeyEvent e) { // } public void keyReleased(KeyEvent e) { // } }); O método de tratamento está abaixo: - -6 private void TrataTecladigitada(KeyEvent e) { String s = jTextField1.getText(); s.concat(Integer.toString(e.getKeyChar())); jLabel2.setText("Tecla ->"+Integer.toString(e.getKeyChar())); } A Interface ItemListener Esta interface trata os eventos para as caixas de seleção. Funciona sempre que o componente muda de estado, de selecionado para não selecionado ou vice versa. Acrescentando um componente jCheckBox com o texto – Caixa Selecionada – para testar o tratamento do evento. A Interface FocusListener Esta interface gerencia o evento para o ganho ou a perda de foco de um componente. Possui dois métodos de tratamento, uma para quando o componente ganha o foco e o outro para quando o componente perde o foco. - -7 Através deste evento podemos enriquecer o tratamento das interfaces. Acrescentamos o tratamento de evento para o foco para o componente jCheckBox2 no programa, teremos: jCheckBox2.addltemListener(new java.awt.event.ltemListener() { public void itemStateChanged(ItemEvent e) { trataMudancaEstado(e); } }); O método do tratamento foi implementado como segue: Object(] i = jCheckBox2.getSelectedObjects(); if(i!=null) jLabel2.setText("Caixa de Texto Está selecionada"); else jLabel2.setText("Caixa de Texto não está selecionada"); } A Interface FocusListener Neste caso, verificamos se a caixa está selecionada ou não. Como temos apenas uma caixa, se a caixa estiver selecionada, um objeto é retornado, caso contrário, o objeto i será nulo. - -8 Antes de prosseguir, leia o texto “JComboBox”: http://estaciodocente.webaula.com.br/cursos/gon282/docs /14POO_aula05_doc01.pdf Tratamento de caracteres: validando expressões de seqüência de caracteres O Java fornece um conjunto de classes para validar expressões regulares, como telefone, CEP, email, etc. São muito úteis para validar entrada de dados, principalmente quando é necessário efetuar a crítica. Estas classes são Pattern e Matcher. Matches Guarda tanto o padrão de uma expressão regular quanto a cadeia de caracteres que desejamos verificar. Guarda tanto o padrão de uma expressão regular quanto a cadeia de caracteres que desejamos verificar. Fique ligado private boolean validaEmail(String email){ //Define o padrão da entrada de dados Pattern p = Pattern.compile(".+@.+\\.[a-z]+"); http://estaciodocente.webaula.com.br/cursos/gon282/docs/14POO_aula05_doc01.pdf http://estaciodocente.webaula.com.br/cursos/gon282/docs/14POO_aula05_doc01.pdf - -9 Exemplo de cadastro de pessoa Vamos fazer um programa para cadastrar elementos da classe pessoa, colocando em uma lista de elementos. Este pequeno programa deverá criticar se existe elementos digitados, o email precisa estar nos padrões corretos (ex.: pessoa@hotmail.com). A navegação se dará através dos botões Início e Próximo. Ao clicar na caixa Habilita Navegação, os botões serão habilitados e os botões de cadastro desabilitados. Como só podemos autorizar cadastro com emails com a estrutura correta, o botão inclui só ficará habilitado quando a crítica do texto do email estiver correta. Caso o email não esteja no padrão, o usuário terá que informar um email no formato correto. O usuário ficará preso no campo email até digitar um email válido. Para sair do campo, basta limpar a caixa de texto que será autorizado a sair. Observe na imagem que o botão inclui está desabilitado Pattern p = Pattern.compile(".+@.+\\.[a-z]+"); //Valida a cadeia de caracteres com o padrão definido Matcher m = p.matcher(email); return (m.matches()); } - -10 Para ver o código do programa, clique aqui: http://estaciodocente.webaula.com.br/cursos/gon282/docs /14POO_aula05_doc02.pdf O que vem na próxima aula •Compreender o funcionamento das ferramentas de mapeamento de acesso aos bancos de dados. •Utilizar componentes para acesso a dados em banco de dados. CONCLUSÃO Nesta aula, você: • Compreendeu os modelos de tratamentos de eventos para textos. • Utilizou os tratamentos de eventos relacionados à validação de caracteres inseridos através do teclado. • Manipulou com os tratamentos de eventos de componentes com textos e listas. Saiba mais Para esta aula sugiro as seguintes tarefas: • Leitura do Capítulo 11 (11.14 até 11.17) do livro Java como programar, 6ª Edição, de H. Deitel e P. Deitel, Editora Pearson Education, 2005. • Resolução dos exercícios de 11.19 até 11.26 do capítulo 11 do livro Java Como Programar. • • • • • http://estaciodocente.webaula.com.br/cursos/gon282/docs/14POO_aula05_doc02.pdf http://estaciodocente.webaula.com.br/cursos/gon282/docs/14POO_aula05_doc02.pdf Olá! O que vem na próxima aula CONCLUSÃO