MANIPULAÇÃO DE EVENTOS

Documentos relacionados
Aula 2 Eventos do Mouse by Pearson Education do Brasil

Aula 2 Even e to t s d o M ouse

INF1636 PROGRAMAÇÃO ORIENTADA A OBJETOS

INF1337 LINGUAGEM DE PROGRAMAÇÃO ORIENTADA A OBJETOS

PROGRAMAÇÃO ORIENTADA A OBJETOS. Aula 4- Tratamento de Eventos em Interfaces Gráficas

TRATAMENTO DE EVENTOS EM JAVA USANDO SWING. George Gomes Cabral

Programação Java. Construção de Interface gráfica. Processo Básico: OO + Eventos. Exemplo

Manipulando Eventos em Java

Tratamento de Eventos em Programas com GUI - Graphical User Interface. Jorge H. C. Fernandes UFRN Junho de 2001

Como tratar eventos - A interface ActionListener e o método actionperformed

Introdução Interfaces (revisão) Delegação de eventos Tratamento de eventos Classes Adaptadoras Capturando Eventos nos Componentes Swing

Adding User Interaction

Componentes Parte 02

Introdução à Programação Gráfica em Java

Java Avançado com acesso JDBC a Banco de Dados, Arquivos, Swing e Eventos

Aplicação Linguagem de Programação Orientada a Objeto

Criando interfaces com o usuário. Continuação

Módulo 7. Interface Gráfica com o Usuário GUI - Introdução. Programação Orientada a Objetos I Java (Rone Ilídio)

Objetivos do Capítulo

Vector Java. Empregado.java

Arquivos. Prof. Leonardo Barreto Campos 1

Processo Básico: OO + Eventos. Java First-Tier: Aplicações. Construção de Interface gráfica. Exemplo. Exemplo. Exemplo. Hierarquia de Composição

Roteiro. Introdução. Uma Introdução à Programação Orientada a Objetos e JAVA usando NetBeans. Objetos. Princípios da Orientação a Objetos

PROGRAMAÇÃO ORIENTADA A OBJETOS. Aula de Revisão para AV1

Manipulação de Eventos

AULA 10 - CCT0024 Linguagem de Programação Objetivos da aula. Janelas para leitura e exibição de textos

Interfaces Event-Driven Técnica de Rubberband

Programação Orientada a Objectos - P. Prata, P. Fazendeiro

Programação Orientada a Objetos com Java. Prof. Júlio Machado

MÓDULO 4 SWING Parte 3

Exercício 1: Criar um programa que utiliza que desenha uma interface gráfica tal como descrito na Figura 1.1.

Aula 12 POO 1 Interface Gráfica no Java. Profa. Elaine Faria UFU

Interfaces Gráficas (GUIs) em Java usando Swing Parte I - O básico

PROGRAMAÇÃO ORIENTADA A OBJETOS. Aula de Revisão para AV1

LINGUAGEM DE PROGAMAÇÃO II Criando uma Classe

Prof. Rogério Albuquerque de Almeida. Programação Orientada a Objetos II Java Nona aula

Aplicações de Linguagem de Programação Orientada a Objeto

Aula Prática Criando Views e Controles

Programação Orientada a Objectos - P. Prata, P. Fazendeiro

Interfaces Gráficas com Swing. Professor Leonardo Larback

Elaborando as Interfaces Aulas 31, 32 e 33

JAVA APLICAÇÕES GRÁFICAS Propriedades Utilizadas: Font size Animation FACULDADE DE TECNOLOGIA SENAC PELOTAS

Programação Gráfica em Java Alguns Componentes javax.swing

Componente JOptionPane Layout Null Tratamento de Eventos. Action Listener

PROGRAMAÇÃO ORIENTADA A OBJETOS. Aula 5- Tratamento de Eventos de Manipulação de textos

Elaborando Interfaces. Prof. André Aparecido da Silva Disponível em: Aulas 16, 17, e 18

LPII Programando uma Cálculadora Simples Módulo III

BCC221 Programação Orientada a Objetos. Prof. Marco Antonio M. Carvalho 2014/2

Elaborando as Interfaces Aulas 43, 44 e 45

Tratamento de Eventos

Introdução à Tecnologia Java 02/2012. Java Aula 02 15/08/2012. Celso Olivete Júnior.

Prof. Fernando V. Paulovich 25 de julho de SCC Programação Orientada a Objetos

Java AWT Objectos e Eventos. Label Button TextField Checkbox RadioButton Combobox

Universidade Federal de Uberlândia Faculdade de Computação GGI030 Programação Orientada a Objetos 2o. Semestre de 2017 Prof.

A classe JTextField

Principais Classes Swing AWT

UNIVERSIDADE FEDERAL DO PARANÁ. CURSO: Ciência da Computação DATA: / / 2013 PERÍODO: 4 o.

JTextArea JMenuBar JTable JDesktopPane e JInternalFrame

Elaborando as Interfaces dos trabalhos das aulas 28, 29 e 30.

Introdução à Tecnologia Java 02/2012. Java Aula 03. gráficas GUI Swing 29/08/2012. Celso Olivete Júnior.

JAVA. Marcio de Carvalho Victorino. Interface Gráfica em Java (GUI)

package br.com.cadastro.visao;

Aula 15 Interface Gáfica. Disciplina: Programação Estruturada e Orientada a Objetos Prof. Bruno Gomes

. Uma instância da classe JTextField gera uma instância da classe ActionEvent quando o objecto está activo e o utilizador pressiona a tecla ENTER.

Tiago Alves de Oliveira. Tiago Alves de Oliveira

Interfaces Gráficas POO. Prof. Márcio Delamaro

Programação Orientada a Objetos. Vagner Luz do Carmo - Vluzrmos

Adicionados a componentes que possuem o método setjmenubar. tem itens de menu e são inseridos na MenuBar podem funcionar como submenu

Caso não exista nenhum listener registado no objecto que gera o evento, este não terá qualquer efeito.

Programação Orientada a Objetos

Aula 11: Interfaces gráficas (1/2): elementos de interface Swing

Layout. Programação Orientada a Objetos Java. Prof. Geraldo Braz Junior. Baseado em material original de João Carlos Pinheiro CEFET/MA

Elaborando as Interfaces dos trabalhos das aulas 25, 26 e 27.

Prof. Msc. Vladimir Camelo

Encerrando Introdução a Objetos e Classes Redefinição de Métodos (1)

JavaBeans. Java Deployment Course: Aula 8. por Jorge H C Fernandes CESAR-DI-UFPE Recife, 1999

Curso Java Starter. 1

Introdução à construção de GUIs

Desenvolvimento de Aplicações Desktop

HABILITANDO A IDE DO ECLIPSE

Construção de Interfaces Gráficas

Gerenciadores de Layout

Programação II. Cassio Diego

Interface gráfica em Java: Swing e SWT

COM220 Aula 17: Interface Gráfica Containers Swing

Componentes GUI A aparência e maneira como um usuário pode interagir com componentes AWT diferem de acordo com a plataforma. Componentes Swing permite

MODEL-VIEW-CONTROLER. Prof. Fellipe Aleixo

TIC - Programação Visual. Componentes. Prof. Edwar Saliba Júnior Setembro de Unidade 14 Componentes 1

Swing. Page 1. Swing. Prof. Anderson Augustinho Uniandrade

Elaborando Interfaces. Prof. André Aparecido da Silva Disponível em: Aulas 19, 20 e 21

Técnicas de Programação II

(INFORMAÇÕES PARA LABORATÓRIOS VIRTUAIS) Nome do laboratório: Laboratório de Programação (INFORMAÇÕES PARA FERRAMENTA)

Teste de Software: Existe Isto? Jorge Fernandes Junho de 2004

Interface Gráfica. LPG II Java Interface Gráfica AWT. Introdução. AWT - Abstract Window Toolkit

Interface Gráfica. Disciplina: Desenvolvimento de Sistemas. Professor: Thiago Silva Prates

Componentes Parte 01

Exemplo Threads com Swing:

Elaborando Interfaces. Prof. André Aparecido da Silva Disponível em: Aulas 16, 17, e 18

Programação Java. Marco Fagundes. - Herança, Classes Abstratas e Interfaces Marco Fagundes -

Transcrição:

MANIPULAÇÃO DE EVENTOS Ao término desse capítulo você terá aprendido: Tipos de eventos; Manipulação de eventos de componentes; Manipulação de eventos do mouse; Manipulação de eventos do teclado; Interfaces Listener; Classes Adaptadoras de 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. 1.1 FUNCIONAMENTO BÁSICO 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. 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 usá-lo. Normalmente, cada componente (botão, menu, item de lista, janela etc) tem um número de tratadores de eventos associados. 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 Treinamento em Java Módulo 1 1/12

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. A figura a seguir ilustra o processo de interação do usuário com uma determinada janela, contendo as respectivas aplicações e tratadores de eventos incidentes. Treinamento em Java Módulo 1 2/12

1.2 HIERARQUIA DAS CLASSES DE EVENTOS Treinamento em Java Módulo 1 3/12

1.3 EVENTOS DE COMPONENTES Existe uma classe em Java que será a responsável pelo tratamento de eventos. Ou seja, é nela que se identifica o evento que ocorreu e é nela que se define as ações que os aplicativos devem executar quando tal evento ocorrer. A interface ActionListener é composta apenas de um método abstrato, chamado actionperformed. Assim, a interface fica na espera de algum evento, e caso ocorra, ele é imediatamente passado para o método actionperformed. É no corpo desse método que se definem as ações de um determinado componente. Por exemplo: a programação de um botão gravar. Listener pode ser traduzido como 'ouvinte'. Para fazer uso dessas funcionalidades, deve-se importar: import java.awt.event.actionevent; import java.awt.event.actionlistener; Existem diversas formas de tratamento de ações em Java. Pode-se criar uma classe específica para tratar todos os eventos, de todos os componentes de uma janela (JFrame), por exemplo. Também pode-se definir, em cada componente, o seu próprio tratamento para cada tipo de evento necessário. A seguir serão demonstradas essas duas formas: 6.3.1 Através de uma classe que implemente a interface ActionListener 1 package eventos; 2 3 import java.awt.event.actionevent; 4 import java.awt.event.actionlistener; 5 import javax.swing.jbutton; 6 import javax.swing.jframe; 7 import javax.swing.joptionpane; 8 9 public class TrataEventoComponente extends JFrame implements ActionListener { 10 private JButton botaook, botaocancela; 11 12 public TrataEventoComponente(JButton botaook, JButton botaocancela) { 13 this.botaook = botaook; 14 this.botaocancela = botaocancela; 15 } 16 17 @Override 18 public void actionperformed(actionevent evento) { 19 if (evento.getsource() == botaook) { 20 JOptionPane.showMessageDialog(null, "botão OK foi clicado"); 21 } 22 23 if (evento.getsource() == botaocancela) { 24 JOptionPane.showMessageDialog(null, "botão CANCELA foi clicado"); 25 } 26 } // fim do método actionperformed 27 } // fim da classe TrataEventoComponente Treinamento em Java Módulo 1 4/12

1 package eventos; 2 3 import java.awt.flowlayout; 4 import javax.swing.jframe; 5 import javax.swing.jbutton; 7 public class EventoComponente extends JFrame { 9 private JButton btnok = new JButton("OK"); 10 private JButton btncancela = new JButton("Cancela"); 11 private TrataEventoComponente evento; 12 13 public EventoComponente() { 14 super("tratamento de Eventos de Componentes"); 15 setlayout(new FlowLayout()); 16 evento = new TrataEventoComponente(btnOK, btncancela); 17 18 btnok.addactionlistener(evento); 19 add(btnok); 20 21 btncancela.addactionlistener(evento); 22 add(btncancela); 23 } 24 25 public static void main(string[] args) { 26 EventoComponente obj = new EventoComponente(); 27 28 obj.setdefaultcloseoperation(jframe.exit_on_close); 29 obj.setsize(350, 200); 30 obj.setlocation(300, 300); 31 obj.setvisible(true); 32 } 33 } Resultado da execução da classe EventoComponente Treinamento em Java Módulo 1 5/12

6.3.2 Adicionar diretamente em cada componente o tratamento de evento 1 package eventos; 2 3 import java.awt.flowlayout; 4 import java.awt.event.actionevent; 5 import java.awt.event.actionlistener; 6 import javax.swing.jframe; 7 import javax.swing.jbutton; 8 import javax.swing.joptionpane; 9 10 public class EventoComponenteDireto extends JFrame { 11 12 private JButton btnok = new JButton("OK"); 13 private JButton btncancela = new JButton("Cancela"); 14 private TrataEventoComponente evento; 15 16 public EventoComponenteDireto() { 17 super("tratamento de Eventos de Componentes"); 18 setlayout(new FlowLayout()); 19 20 add(btnok); 21 add(btncancela); 22 23 // adicionando tratamento de evento ao botao OK 24 btnok.addactionlistener( 25 new ActionListener() { 26 @Override 27 public void actionperformed(actionevent e) { 28 JOptionPane.showMessageDialog(null, "Clicou no Botão OK","Tratamento de Evento", JOptionPane.WARNING_MESSAGE); 30 } 31 } 32 ); 33 // adicionando tratamento de evento ao botao CANCELAR 34 btncancela.addactionlistener( 35 new ActionListener() { 36 @Override 37 public void actionperformed(actionevent event) { 38 JOptionPane.showMessageDialog(null, "Clicou no Botão CANCELA", "Tratamento de Evento", JOptionPane.WARNING_MESSAGE); 40 System.exit(0); 41 } 42 } 43 ); 44 } 45 46 public static void main(string[] args) { 47 EventoComponenteDireto obj = new EventoComponenteDireto(); 48 49 obj.setdefaultcloseoperation(jframe.exit_on_close); 50 obj.setsize(350, 200); 51 obj.setlocation(300, 300); 52 obj.setvisible(true); 53 } 54 } O resultado da execução da classe EventoComponenteDireto é o mesmo do exemplo da classe EventoComponente. Treinamento em Java Módulo 1 6/12

1.4 EVENTOS DO MOUSE Os eventos gerados por alguma ação do mouse (clicar um botão, por exemplo), são tratados pela classe MouseListener ou MouseAdapter e suas classes-filhas, definidas pelo programador. Essas classes disponibilizam os seguintes métodos: mouseclicked(mouseevent ev) quando um botão do mouse é clicado; mouseentered(mouseevent ev) quando o mouse entra em um componente (passa por cima); mouseexited(mouseevent ev) quando o mouse sai de um componente; mousepressed(mouseevent ev) quando um botão do mouse é pressionado; mousereleased(mouseevent ev) quando um botão do mouse é solto. Já os eventos gerados por algum movimento do mouse são tratados pela classe MouseMotionListener ou MouseMotionAdapter e suas classes-filhas, definidas pelo programador. Essas classes disponibilizam os seguintes métodos: mousemoved(mouseevent ev) quando o mouse é movido dentro de um componente ou janela; mousedraged(mouseevent ev) quando o mouse é movido com um botão pressionado dentro de um componente ou janela (para implementar o recurso arrastare-soltar); A seguir segue um exemplo contendo a implementação completa para todos os métodos da interface MouseListener e MouseMotionListener. 1 package eventos; 2 3 import java.awt.color; 4 import java.awt.borderlayout; 5 import java.awt.event.mouselistener; 6 import java.awt.event.mousemotionlistener; 7 import java.awt.event.mouseevent; 8 import javax.swing.jframe; 9 import javax.swing.jlabel; 10 import javax.swing.jpanel; 11 12 public class EventosMouse extends JFrame { 13 14 private JPanel mousepanel; // painel em que os eventos de mouse ocorrerão 15 private JLabel statusbar; // rótulo que exibe informações de evento 16 17 // construtor MouseTrackerFrame configura GUI e 18 // registra handlers de evento de mouse 19 public EventosMouse() { 20 super("demonstração de Eventos do Mouse"); 21 22 mousepanel = new JPanel(); // cria o painel 23 mousepanel.setbackground(color.white); // configura cor de fundo 24 add(mousepanel, BorderLayout.CENTER); // adiciona painel ao JFrame 25 26 statusbar = new JLabel("Mouse fora do JPanel"); 27 add(statusbar, BorderLayout.SOUTH); // adiciona rótulo ao JFrame 28 Treinamento em Java Módulo 1 7/12

29 // cria e registra listener para mouse e eventos de movimento 30 MouseHandler handler = new MouseHandler(); 31 mousepanel.addmouselistener(handler); 32 mousepanel.addmousemotionlistener(handler); 33 } // fim do construtor de MouseTrackerFrame 34 35 private class MouseHandler implements MouseListener, 36 MouseMotionListener { 37 // Handlers de evento de MouseListener 38 // trata evento quando o mouse é liberado logo depois de pressionado 39 public void mouseclicked(mouseevent event) { 40 statusbar.settext(string.format("clicado em [%d, %d]", 41 event.getx(), event.gety())); 42 } // fim do método mouseclicked 43 44 // trata evento quando mouse é pressionado 45 public void mousepressed(mouseevent event) { 46 statusbar.settext(string.format("pressionado em [%d, %d]", 47 event.getx(), event.gety())); 48 } // fim do método mousepressed 49 50 // trata evento quando mouse é liberado depois de arrastado 51 public void mousereleased(mouseevent event) { 52 statusbar.settext(string.format("liberado em [%d, %d]", 53 event.getx(), event.gety())); 54 } // fim do método mousereleased 55 56 // trata evento quando mouse entra na área 57 public void mouseentered(mouseevent event) { 58 statusbar.settext(string.format("mouse na área [%d, %d]", 59 event.getx(), event.gety())); 60 mousepanel.setbackground(color.blue); 61 } // fim do método mouseentered 62 63 // trata evento quando mouse sai da área 64 public void mouseexited(mouseevent event) { 65 statusbar.settext("mouse fora do JPanel"); 66 mousepanel.setbackground(color.white); 67 } // mouseexited fim do método 68 69 // Handlers de evento de MouseMotionListener 70 // trata evento quando arrasta o mouse com o botão pressionado 71 public void mousedragged(mouseevent event) { 72 statusbar.settext(string.format("arrastando em [%d, %d]", 73 event.getx(), event.gety())); 74 } // fim do método mousedragged 75 76 // trata evento quando usuário move o mouse 77 public void mousemoved(mouseevent event) { 78 statusbar.settext(string.format("movido em [%d, %d]", 79 event.getx(), event.gety())); 80 } // fim do método mousemoved 81 } // fim da classe interna MouseHandler 82 83 public static void main(string args[]) { 84 EventosMouse eventos = new EventosMouse(); 85 eventos.setdefaultcloseoperation(jframe.exit_on_close); 86 eventos.setsize(500, 300); // configura o tamanho da janela 87 eventos.setlocation(300, 200); // posiciona a janela 88 eventos.setvisible(true); // exibe a janela 89 } // fim do método main 90 } // fim da classe EventosMouse Treinamento em Java Módulo 1 8/12

1.5 EVENTOS DE TECLADO Eventos de teclado são gerados quando as teclas do teclado são pressionadas e liberadas, sendo controlados através da interface KeyListener, que possui os seguintes 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). A seguir é apresentado um exemplo para manipulação de eventos de teclado através da interface KeyListener. 1 package eventos; 2 3 import java.awt.color; 4 import java.awt.event.keylistener; 5 import java.awt.event.keyevent; 6 import javax.swing.jframe; 7 import javax.swing.jtextarea; 8 9 public class EventosTeclado extends JFrame implements KeyListener { 10 11 private String line1 = ""; // primeira linha de textarea 12 private String line2 = ""; // segunda linha de textarea 13 private String line3 = ""; // terceira linha de textarea 14 private JTextArea textarea; // textarea a exibir saída 15 16 // construtor KeyDemoFrame 17 public EventosTeclado() { 18 super("demonstrando Eventos de Teclado em Java"); 19 20 textarea = new JTextArea(10, 15); // configura JTextArea 21 textarea.settext("pressione uma tecla..."); 22 textarea.setenabled(false); // desativa textarea 23 textarea.setdisabledtextcolor(color.black); // configura cor de texto 24 add(textarea); // adiciona textarea ao JFrame 25 26 addkeylistener(this); // permite que o frame processe os eventos de teclado 27 } // fim do construtor KeyDemoFrame 28 29 // trata o pressionamento de qualquer tecla 30 public void keypressed(keyevent event) { 31 line1 = String.format("Tecla pressionada: %s", 32 event.getkeytext(event.getkeycode())); // gera saída de tecla pressionada 33 setlines2and3(event); // configura a saída das linhas dois e três 34 } // fim do método keypressed 35 36 // trata liberação de qualquer tecla 37 public void keyreleased(keyevent event) { 38 line1 = String.format("Tecla liberada: %s", 39 event.getkeytext(event.getkeycode())); // gera saída de tecla liberada 40 setlines2and3(event); // configura a saída das linhas dois e três Treinamento em Java Módulo 1 9/12

41 } // fim do método keyreleased 42 43 // trata pressionamento de uma tecla de ação 44 public void keytyped(keyevent event) { 45 line1 = String.format("Tecla pressionada: %s", event.getkeychar()); 46 setlines2and3(event); // configura a saída das linhas dois e três 47 } // fim do método keytyped 48 49 // configura segunda e terceira linhas de saída 50 private void setlines2and3(keyevent event) { 51 line2 = String.format("\nEssa tecla %sé uma tecla de função", 52 (event.isactionkey()? "" : "não ")); 53 54 String temp = event.getkeymodifierstext(event.getmodifiers()); 55 56 line3 = String.format("\nTecla modificadora pressionada: %s", 57 (temp.equals("")? "nenhuma" : temp)); // modificadores de saída 58 59 textarea.settext(string.format("%s\n%s\n%s\n", 60 line1, line2, line3)); // gera saída de três linhas de texto 61 } // fim do método setlines2and3 62 63 public static void main(string args[]) { 64 EventosTeclado teclado = new EventosTeclado(); 65 teclado.setdefaultcloseoperation(jframe.exit_on_close); 66 teclado.setsize(500, 300); // set frame size 67 teclado.setlocation(300, 300); 68 teclado.setvisible(true); // display frame 69 } // end main 70 } // end class KeyDemoFrame 1.6 INTERFACES x CLASSES ADAPTADORAS Muitas das interfaces listeners de eventos fornecem muitos métodos, mas nem sempre é necessário implementar todos os métodos disponíveis nessas interfaces. Por exemplo, o programa pode precisar apenas do tratamento do evento arrastar botões do mouse. Utilizando a interface MouseMotionListener, precisamos, obrigatoriamente, implementar todos os métodos, mesmo que deixando-os sem corpo (sem código, apenas a assinatura do método). Para suprir essa necessidade, existem as classes adaptadoras, que fornecem a capacidade de implementação individual dos métodos necessários para tratamento de eventos. Uma classe adaptadora implementa uma interface e fornece uma implementação default (com o corpo do método vazio) de cada método da interface. O desenvolvedor pode estender a classe adaptadora para herdar a implementação default de cada método, e depois sobrescrever o(s) método(s) necessário(s) para o tratamento de eventos. Algumas classes adaptadoras java.awt.event são apresentadas abaixo: Treinamento em Java Módulo 1 10/12

Classe Adaptadora Interface Listener ComponentAdapter ContainerAdapter FocusAdapter KeyAdapter MouseAdapter MouseMotionAdapter WindowAdapter ActionListener ComponentListener ContainerListener FocusListener KeyListener MouseListener MouseMotionListener WindowListener não possui classe adaptadora pois só possui um método. A seguir, um exemplo de uma classe que estende a classe adaptadora MouseAdapter, com uma subclasse (classe interna) para a criação de uma janela Swing com um botão. Importante ressaltar que, para fins didáticos, o tratamento de evento não está configurado para o botão, e sim para a janela. Dessa forma, para que o método mousepressed seja acionado, deve-se clicar em qualquer área da janela (JFrame), e não no botão Botão OK. Treinamento em Java Módulo 1 11/12

1 package eventos; 2 3 import java.awt.flowlayout; 4 import java.awt.event.*; 5 import javax.swing.jbutton; 6 import javax.swing.jframe; 7 import javax.swing.joptionpane; 8 9 public class EventoClasseAdaptadora extends MouseAdapter { 10 11 public static void main(string[] args) { 12 ClasseAdaptadoraJanela janela = new ClasseAdaptadoraJanela(); 13 janela.addmouselistener(new MouseAdapter() { 14 @Override 15 public void mousepressed(mouseevent e) { 16 JOptionPane.showMessageDialog(null, "Mouse Pressionado", 17 "Tratamento de Evento", JOptionPane.WARNING_MESSAGE); 18 } 19 }); 20 } 21 } 22 // subclasse (classe interna) 23 class ClasseAdaptadoraJanela extends JFrame { 24 JButton btnok = new JButton("Botão OK"); 25 26 public ClasseAdaptadoraJanela() { 27 settitle("classe Adaptadora de Evento no Java"); 28 setsize(400, 300); 29 setlocation(300, 300); 30 setlayout(new FlowLayout()); 31 add(btnok); 32 setvisible(true); 33 } 34 } Treinamento em Java Módulo 1 12/12