Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original
1 Java Eventos Introdução A programação de sistemas baseados em interface gráfica utiliza eventos para acionar elementos gráficos (janelas, botões, menus etc) e promover a interação das funcionalidades do sistema com o usuário; Os eventos são acionados por meio dos elementos gráficos são de várias formas; Existem diversos tipos de eventos e, a maneira como são chamados depende, por exemplo, do elemento gráfico manipulado, exemplos de acionadores de eventos seriam: Gerados pelo mouse; Gerados pelo uso do teclado; Uso de elementos gráficos (botões, menus, janelas etc). Como funciona os eventos em Java? Os principais eventos estão implementados no pacote java.awt.event; O pacote event contém diversas classes de interface que permitem definir diversos eventos para componentes gráficos de interface; Fonte do evento Ouvinte registrado Evento Ouvinte não registrado Modelo de delegação de evento Classes de Interface e Eventos Interface nada mais é do que dispositivo ou sistema que permite duas entidades interagir entre si; Exemplos de interface seriam: Controle remoto de Tvs: permite a um expectador interagir com a TV; Linguagem natural: permite a comunicação entre duas pessoas. Classes de Interface e Eventos Uma Interface Java prescreve um comportamento (funcionalidade) que a classe pode ter; Classe de interface, de modo geral, é análoga a um protocolo (prescreve um comportamento). Em resumo, uma interface Java define um conjunto de métodos sem, entretanto, implementa-los (somente o cabeçalho do método). As classes que “adquirem” (implementam a interface) esses comportamentos concordam em implementa-los. Por que as interfaces são úteis? Interfaces Java são apropriadas quando, por exemplo, um número de classes compartilham o mesmo comportamento, porém, a forma como se comportarão não é a mesma e, desse modo, não seria apropriado implementar esses comportamentos por herança. Todos os veículos aceleram. Mas aceleram da mesma maneira? 2 Mas sobre Interface Java Uma interface também pode conter dados (constantes). Qualquer classe que implementa uma interface pode usar esses dados constantes; Dentro da interface qualquer método ou dado é automaticamente declarado como público; Qualquer declaração de dados em uma interface são automaticamente assumidos como final. O que são eventos? Programas baseados em janelas são assíncronos, isto significa que qualquer coisa pode acontecer a qualquer tempo. Por exemplo, o programa não “sabe” predizer quando o usuário poderá clicar sobre um botão; Por causa disso, programas gráficos são orientados a eventos (modelo de delegação de eventos), desse modo, interações realizadas pelo usuário são passadas para o programa processar; Como funcionam os eventos? Basicamente, os eventos trabalham dessa maneira: Qualquer sistema operacional que suporta GUI (interface gráfica) monitora eventos tais como clique de mouse, teclas pressionadas etc; O sistema operacional informa esses eventos ao programa que está executando; O programa decide o que fazer com esses eventos. Como funcionam os eventos? O programador precisa construir um número de tratadores de eventos capaz de processar um tipo particular de evento: Clique do mouse; Movimentação do mouse; Tecla pressionada ... Uma vez tenha sido definido o tratamento do evento, ele deve ser registrado para que o máquina virtual Java possa usa-lo; Normalmente, cada componente (botão, menu, item de lista, janela etc) tem um número de tratadores de eventos associados. Como funcionam os eventos? Por exemplo: Quando um mouse dá entrada em um componente, o evento “MouseEntered” é gerado; Logo após a ocorrência do evento, a máquina virtual Java verifica se o componente, no qual o mouse deu a entrada, possui um evento registrado para esse tipo de ocorrência; Havendo o evento de entrada do mouse registrado, é passado o controle para esse componente e o método associado é executado. Modelo de Delegação de Eventos Como funciona o modelo de delegação de eventos em Java? Uma fonte gera um evento e o envia para um ou mais listeners (ouvintes); Os listeners precisam ser previamente registrados junto à fonte do evento, para receber a notificação desta fonte. 3 Hierarquia das classes de eventos jav a.u til. Ev en tO bje ct jav a.a wt .A W TE ve nt java.awt.event.AdjustmentEvent java.awt.event.ComponentEvent java.awt.event.FocusEvent java.awt.event.KeyEvent java.awt.event.MouseEvent java.awt.event.WindowEvent java.awt.event.ActionEvent java.awt.event.ItemEvent java.awt.event.TextEvent Hierarquia das classes de eventos Categoria Eventos Interface Mouse Arrastar/Soltar o mouse MouseMotionListener Clique sobre um botão etc MouseListener Teclado Tecla pressionada KeyListener Seleção de itens Quando seleciona um item ItemListener Controle de texto Nova linha em um controle TextListener Controle Scrolling Quando deslisa a barra de rolagem AdjustmentListener Botões, menus, etc Quando pressiona ou seleciona ActionListener Mudanças janela Abrir/fechar/minimizar etc WindowListener Mudança de foco Tabulação/Enter/Foco FocusListener Componente Tamanho/esconder/mover ComponentListener Container Adicionar/mover um componente ContainerListener interface MouseMotionListener Métodos: void mouseDragged ( MouseEvent e ) Invocado quando o botão do mouse épressionado e arrastado. void mouseMoved ( MouseEvent e ) Invocado quando o mouse é movido para um componente (sem o botão estar pressionado). interface MouseListener Métodos: void mouseClicked ( MouseEvent e ) Invocado quando o mouse é clicladosobre um componente. void mouseEntered ( MouseEvent e ) Invocado quando o mouse foca (entra) em um componente. void mouseExited ( MouseEvent e ) Invocado quando o mouse tira o foco (sai) de um componente. void mousePressed (MouseEvent e ) Invocado quando um botão do mouse é pressionado. void mouseReleased ( MouseEvent e ) Invocado quando o botão do mouse éliberado (solto após pressionado). interface KeyListener Métodos: void keyPressed ( KeyEvent e ) Invocado quando uma tecla épressionada. void keyReleased ( KeyEvent e ) Invocado quando uma tecla é solta (após ser pressionada). void keyTyped ( KeyEvent e ) Invocado quando uma tecla épressionada (para capturar a tecla) interface ItemListener Métodos: void itemStateChanged ( ItemEvent e ) Invocado quando o estado de um item é alterado. Por exemplo, quando um item de um Radio ou Check mudam. 4 interface TextListener Métodos: void textValueChanged ( TextEvent e ) Invocado quando o valor de um objeto texto é alterado. Por exemplo, mudança no texto de um JLabel. interface AdjustmentListener Métodos: void adjustmentValueChanged ( AdjustmentEvent e ) Invocado quando o valor de um componente ajustável (barra de rolagem por exemplo) é alterado. interface ActionListener Métodos: void actionPerformed ( ActionEvent e ) Invocado quando uma ação ocorre. Por exemplo: botão pressionado, item de menu selecionado. interface WindowListener Métodos: void windowActivated ( WindowEvent e ) Invocado quando uma janela é ativada (recebe o foco por exemplo). void windowClosed ( WindowEvent e ) Invocado quando uma janela é fechada. void windowClosing ( WindowEvent e ) Invocada quando uma janela estáfechando. windowDeactivated ( WindowEvent e ) Invocado quando uma janela é desativada (perde o foco por exemplo). windowDeiconified ( WindowEvent e ) Invocado quando uma janela émaximizada. void windowIconified ( WindowEvent e ) Invocado quando uma janela éminimizada. void windowOpened ( WindowEvent e ) Invocado quando uma janela é aberta. interface FocusListener Métodos: void focusGained ( FocusEvent e ) Invocado quando um componente recebe o foco. void focusLost ( FocusEvent e ) Invocado quando o componente perde o foco. interface ComponentListener Métodos: void componentHidden ( ComponentEvent e ) Invocado quando o componente é ocultado. void componentMoved ( ComponentEvent e ) Invocado quando o componente é movido. componentResized ( ComponentEvent e ) Invocado quando as dimensões do componente são alteradas. void componentShown ( ComponentEvent e ) Invocado quando o componente é mostrado após ocultação. 5 interface ContainerListener Métodos: void componentAdded ( ContainerEvent e ) Invocado quando um componente é adicionado ao container. void componentRemoved ( ContainerEvent e ) Invocado quando um componente é removido do container. Exemplo: botão fechar 1. import java.awt.*; 2. import java.awt.event.*; 3. import javax.swing.*; 4. public class BotaoFechar extends JButton implements ActionListener { 5. public BotaoFechar(){ 6. this.setText("Fechar"); 7. this.addActionListener(this); 8. } 9. public void actionPerformed(ActionEvent e) { 10. System.exit(0); 11. } 12. } Obs.: o botão deve ser adicionado a um frame com o método main. Exemplo: comentários As linhas 1,2 e 3 importam as classes utilizadas no código. A linha 4 declara uma classe chamada BotaoFechar herdando as características da classe Jbutton. Além disso implementa a interface ActionListener a qual possui o método abstrato actionPerformed que deverá ser implementado. A linha 5 declara o cabeçalho do método construtor. A linha 6 define o rótulo do botão; A linha 7 adiciona a classe ao ouvinte de eventos; Entre as linhas 9 a 11 é implementado o método abstrato (actionPerformed) herdado da interface ActionListener. A linha 10 executa o método exit passando como argumento zero (para fechar a janela). Links http://www2.dm.ufscar.br/~waldeck/curso/java/ http://www.mundooo.com.br Java Eventos Introdução Como funciona os eventos em Java? Classes de Interface e Eventos Classes de Interface e Eventos Por que as interfaces são úteis? Mas sobre Interface Java O que são eventos? Como funcionam os eventos? Como funcionam os eventos? Como funcionam os eventos? Modelo de Delegação de Eventos Hierarquia das classes de eventos Hierarquia das classes de eventos interface MouseMotionListener interface MouseListener interface KeyListener interface ItemListener interface TextListener interface AdjustmentListener interface ActionListener interface WindowListener interface FocusListener interface ComponentListener interface ContainerListener Exemplo: botão fechar Exemplo: comentários Links