Baixe o app para aproveitar ainda mais
Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original
Programação Orientada a Objetos Professora : Jane * Interface Gráfica com Swing Eventos Aula 6 Professora: Jane Programação Orientada a Objetos Professora : Jane * Manipulação de eventos Eventos são gerados quando o usuário interage com a interface gráfica. Exemplos de eventos : Clicar em um botão Selecionar um item de um menu Arrastar um objeto pela tela Rolar um texto usando as barras de rolagem Digitar uma informação em uma caixa de texto Passar o mouse sobre um objeto Redimensionar um objeto Programação Orientada a Objetos Professora : Jane * Listeners No Java os eventos são tratados por objetos chamados “listeners” (ouvintes). Fonte do evento : botão Ok Programação Orientada a Objetos Professora : Jane * Um só ouvinte para duas fontes do mesmo tipo. As fontes dos eventos são objetos de JButton. Programação Orientada a Objetos Professora : Jane * Objeto Listener (ouvinte) Cada componente registra um objeto que irá receber os eventos (objeto listener), o que representa uma forma de delegar tratamento de evento. Os eventos são objetos que são reportados somente aos “listeners” registrados. Programação Orientada a Objetos Professora : Jane * Hierarquia de classes relacionadas a eventos do AWT Fonte : Core Java Programação Orientada a Objetos Professora : Jane * Devido às particularidades de cada evento, AWT e Swing prevêem um conjunto de interfaces que devem ser implementadas em nossas aplicações, de acordo com o tipo do evento que desejamos tratar. Evento é um ActionEvent Interface é a ActionListener Programação Orientada a Objetos Professora : Jane * Interface ( não é interface gráfica ou GUI) Lembrete : Um interface representa um conjunto de serviços. Uma interface só pode ter métodos abstratos e constantes estáticas. Um método abstrato não tem corpo. Ex: public double ordenar(); Uma classe pode implementar uma ou mais interfaces. O que isso significa ? Que a classe tem que definir todos os métodos abstratos da interface. Programação Orientada a Objetos Professora : Jane * Cada evento tem uma interface listener associada . Exemplo : Um objeto ActionEvent está associado à ActionListener. O objeto listener usará a informação no objeto evento para determinar a reação ao evento. Programação Orientada a Objetos Professora : Jane * Interfaces listener pacote : java.awt.event “ Embora o pacote javax.swing.event contenha mais interfaces listener que são específicas aos componentes de interface do Swing, ainda são usadas as interfaces listener básicas do AWT para processamento de eventos em geral. “ Fonte : Core Java Programação Orientada a Objetos Professora : Jane * Detalhando um pouco .. algumas interfaces mais utilizadas: ActionListener – eventos que representam ação, como por exemplo clique no botão. ItemListener – evento no combobox KeyListener – eventos do teclado MouseListener – eventos de clique com o mouse MouseMotionListener – eventos de movimentação do mouse WindowListener – eventos direcionados para a janela de uma aplicação (fechar, minimizar, maximizar, etc) Programação Orientada a Objetos Professora : Jane * Classe TestaEventos implementa a interface ActionListener Atenção : Deverá ser definido o método actionPerformed da interface ActionListener. Programação Orientada a Objetos Professora : Jane * Resumindo ... Um objeto listener é uma instância (objeto) de uma classe que implementa uma interface especial denominada interface listener. Ex: ActionListener A fonte do evento é um objeto que pode registrar objetos listener (ouvinte) e pode enviá-los objetos eventos. Os objetos listener usarão a informação no objeto evento para determinar a reação ao evento. Programação Orientada a Objetos Professora : Jane * A informação sobre o evento está encapsulada no objeto evento. Diferentes fontes de evento podem produzir diferentes tipos de eventos. Exemplo 1 : fonte do evento : botão evento : ActionEvent Exemplo 2: fonte do evento : window evento : WindowEvent Programação Orientada a Objetos Professora : Jane * Associando um objeto fonte do evento ao objeto ouvinte Para associar um objeto (fonte do evento) ao listener que vai tratar os seus eventos, usamos os métodos do tipo: add<nome da interface>(<listener>) Exemplos: cadastrar.addActionListener(<nome do objeto listener que vai tratar os eventos do botao cadastrar>); nome.addKeyListener((<nome do objeto listener que vai tratar os eventos da caixa de texto nome>); this.addMouseListener(<nome do objeto listener que vai tratar os eventos do mouse no objeto atual>); Programação Orientada a Objetos Professora : Jane * Exemplo (Fonte : Core Java) “ Agora, o ouvinte (listener) é notificado quando um “evento ação” ocorrer no botão . Para botões, um evento ação é um clique no botão. “ Fonte: Core Java Programação Orientada a Objetos Professora : Jane * ActionListener e ActionEvent Interface ActionListener: Evento ActionEvent: As interfaces e eventos estão no pacote java.awt.event . Logo, devemos importar este pacote. Programação Orientada a Objetos Professora : Jane * Exemplo Objetivo : Construir a interface gráfica abaixo. Após digitar o nome e clicar no botão Clique aqui, a palavra Surpresa mudará para um Olá seguido do nome digitado. Então, a janela ficará amarela. Nomes dos componentes usados : rotuloNome (ou lblNome), campoNome (txtNome), botaoCliqueAqui (ou btnCliqueAqui) , rotuloSurpresa (lblSupresa) Programação Orientada a Objetos Professora : Jane * Passo a passo ... Resumido ... Veja o código Passo 1 : Desenhar a interface usando FlowLayout. Passo 2 : Adicionar componentes adequadamente. Passo 3: Criar uma classe interna para o tratamento do evento. Esta classe deverá implementar a interface ActionListener. Depois, criar o objeto ouvinte da classe interna. Passo 4: Associar o objeto fonte ao ouvinte NOTE : Fonte do evento : objeto botaoCliqueAqui da classe JButton Ouvinte do evento : objeto ouvinte, que é um objeto da classe interna. Associando a fonte do evento ao ouvinte do evento : botaoCliqueAqui.addActionListener(ouvinte); Programação Orientada a Objetos Professora : Jane * Classe interna Note : O objeto ouvinte é desta classe private class OuvinteBotao implements ActionListener { public void actionPerformed(ActionEvent e) { rotuloSurpresa.setText("Olá " + campoNome.getText() + " !"); c.setBackground(Color.YELLOW); } } //fim da classe BotaoOuvinte Programação Orientada a Objetos Professora : Jane * Exercícios de fixação Trate no método actionPerformed o caso do usuário não digitar nome algum e clicar no botão. Teste o método getSource() com o objeto e. Teste o método getActionCommand() com o objeto botão. Programação Orientada a Objetos Professora : Jane * GABARITO private class OuvinteBotao implements ActionListener { public void actionPerformed(ActionEvent e) { JOptionPane.showMessageDialog(null,"Identificar a acao do evento: " + e.getActionCommand()); String nome = campoNome.getText(); if (!nome.equals("")) // não é o caso que nome é igual a string vazia ? { rotuloSurpresa.setText(" Olá " + nome + " !"); c.setBackground(Color.yellow); } else rotuloSurpresa.setText("Por favor, digite seu nome. "); Programação Orientada a Objetos Professora : Jane * //Usando getSource() e equals Object b = e.getSource(); //getSource() retorna o objeto que sofreu o evento if (b.equals(botaoCliqueAqui)) System.out.println("O botão Clique Aqui sofreu o evento"); } fim do método actionPerformed } fim da classe interna OuvinteBotao Programação Orientada a Objetos Professora : Jane * Exemplo ... Veja o projeto Observações : Será necessário usar os métodos abaixo Para converter de String para double : usar o método estático parseDouble da classe Double. Faz-se : double valor = Double.parseDouble(str); sendo str uma string que pode ser convertida para double. 2) Para converter de double para String : usar o método valueOf Faz-se : String resultado = String.valueOf(numero); onde numero é um double. Programação Orientada a Objetos Professora : Jane * Exercício Crie um aplicação para calcular o IMC. Deve-se ler a altura e o peso de um indivíduo e calcular o índice de massa corporal, dado pela fórmula: IMC = peso / (altura * altura) onde peso deve estar em Kg e a altura em metros.
Compartilhar