Gestão de eventos do Rato e teclado



Documentos relacionados
Tratamento de Eventos

Arquitetura de Tratamento de Eventos em Programas com GUI - Graphical User Interface

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

AWT Versus Swing. Java Deployment Course: Aula 5. por Jorge H C Fernandes (jhcf@di.ufpe.br) CESAR-DI-UFPE Recife, 1999

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

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

Aplicações Gráficas com AWT

Programação Gráfica em Java.

INTERFACE COM O USUÁRIO (em Java) Programação Orientada a Objetos

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

Construção de Interfaces Gráficas

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

Programação Orientada a Objetos Flávio de Oliveira Silva 217

Programação III. Interface Gráfica - Swing. Interface Gráfica Swing Jocélio Passos joceliodpassos@bol.com.br. Interface Gráfica - Swing

BCC221 Programação Orientada a Objetos. Prof. Marco Antonio M. Carvalho 2013/1

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

Curso de Java Módulo II Swing Fábio Mengue Centro de Computação - Unicamp

JFrame. JLabel : Utilizado como rótulo para exibição de texto e ícones. Interface Gráfica de JAVA - Graphical User Interface (GUI)

Interfaces Gráficas: Interações Complexas

Interface Gráfica 2. E/S pode ser feita por interface gráfica Biblioteca Swing. javax.swing.*

Introdução à Programação. Interfaces Gráficas

1) De acordo com o trecho de código escrito na linguagem JAVA, responda a questão abaixo:

Construção de Interfaces Gráficas - Introdução

Programação Visual em Java

TRATAMENTO DE EVENTOS EM JAVA USANDO SWING. George Gomes Cabral

Especialização em Engenharia de Software - CEUT

Fundamentos de GUIs. João Carlos Pinheiro. Última Atualização Junho / 2004 Versão: 3.0

Como construir aplicaçõ e applets

Adding User Interaction

Jframe, JDialog ou JApplet

8 Classes Internas. Desenvolvimento OO com Java. Vítor E. Silva Souza

PROGRAMAÇÃO ORIENTADA A OBJETOS -INTERFACES GRÁFICAS. Prof. Angelo Augusto Frozza, M.Sc. frozza@ifc-camboriu.edu.br

MANIPULAÇÃO DE EVENTOS

ou ainda ser chamado um método que pertença a um objeto, que pertence ao objeto em causa:

// Scribble1.java - Modelo de tratamento de eventos 1.1

Manipulando Eventos em Java

Java - Swing. Raphaela Galhardo raphaela@j2eebrasil.com.br

Exemplo 1. Um programa que cria uma instância de uma classe que herda da classe Frame

JAVA APLICAÇÕES GRÁFICAS Propriedade Utilizada: FontSizeAnimation

Programação com Objectos Teste Teórico 04 de Janeiro de 2010, 09:00 (120 minutos)

MÓDULO 4 SWING Parte 3

Desenvolvendo aplicações

Curso de Aprendizado Industrial Desenvolvedor WEB

IZARC (programa para compactar e descompactar ficheiros)

Roteiro para criação de Applet

Desenvolvimento de Aplicações Desktop

Prof. Jhonatan Fernando

Paradigmas da Programação PPROG. Linguagem JAVA. Interfaces. (Livro Big Java, Late Objects Capítulo 9) Nelson Freire (ISEP DEI-PPROG 2013/14) 1/33

{ System.exit(0); Exemplo (WindowAdapter) import java.awt.*; import java.awt.event.*;

Objectivos:. Construir programas com interfaces gráficas Graphical User Interface (GUI) application programs

Modulo IIa Extra: Object

Interfaces Gracas em Java

Lista de Contas: Assinatura. Lista de Contas. Listas de Contas: Descrição. Listas de Contas: Descrição. Listas de Contas: Descrição

Professor Sérgio Furgeri

Dados em Java. Componentes GUI Parte I

Programação com Objectos

EA998 Tópicos em Engenharia de Computação MC933 Tópicos Especiais em Ciência da Computação Android: Interface com o Usuário

Aula 2 Eventos do Mouse by Pearson Education do Brasil

Técnicas de Programação II

App Inventor 2 - programação divertida para Android

Painel de Navegação Para ver o Painel de Navegação, prima CTRL+F. Pode arrastar os cabeçalhos dos documentos neste painel para reorganizá-los.

Capítulo 29. Menus. Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

Curso de Adobe Illustrator CS2

JAVA APLICAÇÕES GRÁFICAS Propriedades Utilizadas: Resize Shape Basic Shape FACULDADE DE TECNOLOGIA SENAC PELOTAS

Como o FIT funciona. FIT: Framework for Integrated Tests FIT. Dados de testes. Programa. Fixtures. classes. Resultados de testes

A ) O cliente terá que implementar uma interface remota. . Definir a interface remota com os métodos que poderão ser acedidos remotamente

1.4.5 Ligar outros serviços de armazenamento

Natureza do Software e dos Sistemas

INF1636 PROGRAMAÇÃO ORIENTADA A OBJETOS

Microsoft Windows: # 1

INF1337 LINGUAGEM DE PROGRAMAÇÃO ORIENTADA A OBJETOS

Interface com o Usuário (UI) UIs Desacopladas (2/3) BSI Bacharelado em Sistemas de Informação LOO Linguagens Orientadas a Objetos

Computação II Orientação a Objetos

Jogo Da Velha. - Parte 1 - Fazendo a parte gráfica do jogo da Velha

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

Programação OO em Java. Profa Andréa Schwertner Charão DELC/CT/UFSM

Exercício 1 : As classes abaixo serão utilizadas neste exercício: public class Ponto { int x; int y; public Ponto(int x, int y){ this.

Sistema operativo Aula 1

LeYa Educação Digital

Programação por Objectos. Java

Membros de classe e de instância. PARTE III: Java e OO - detalhes. Exemplo 1: método. Exercício. Exemplo 1 corrigido

Programação Orientada a Objetos em java. Polimorfismo

OBJECTIVO Aplicação de fórmulas

Capítulo 8. Introdução UML

sobre rogério gonçalves gerente de projetos > digitale agência digital rogerio@digitale.com.br h7p:// h7p://leveme.

Desenvolvimento com Android Studio. Aula 02 Widgets, Manipulação de Dados e Programação de Eventos

Orientação a Objetos

CA: Cidade: UF CARTÃO RESPOSTA QUESTÃO RESPOSTA QUESTÃO RESPOSTA A F B G C H D I

Linguagem de Programação JAVA. Técnico em Informática Professora Michelle Nery

CAPA PARA OS CABOS DA CABEÇA

Aula 3 Componentes de Interface Gráfica

Criar um formulário do tipo Diálogo modal ; Alterar a cor de fundo de um formulário; Inserir botões de comando e caixas de texto;

Orientação a Objetos - Programação em C++

Programação Orientada a Objetos (DPADF 0063)

Programação Orientada a Objetos em Java. GUI Graphical User Interface

Programação por Objectos. Java

Aula 2 Even e to t s d o M ouse

Guia de Introdução. Obtenha ajuda Clique no ponto de interrogação para encontrar conteúdos de ajuda.

Prof. Sandrina Correia

Transcrição:

Programação Na Web Gestão de eventos do Rato e teclado 1 António Gonçalves Agenda Estratégia Geral de gestão de eventos Gestão de eventos em listeners distintos Gestão de eventos através do uso de interfaces Gestão de eventos pelo uso de classes internas Gestão de eventos pelo uso de classes anónimas Tipos de listener 2 Gestão de Eventos 1

Passos 1. Determinara qual o tipo de evento Existem mais de 11 tipos distintos de eventos ActionListener, AdjustmentListener, ComponentListener, ContainerListener, FocusListener, ItemListener, KeyListener, MouseListener, MouseMotionListener, TextListener, WindowListener 2. Definir uma classe que possa processar um evento Implementar uma interface (KeyListener, MouseListener, etc.) Extender uma classe (KeyAdapter, MouseAdapter, etc.) 3. Registo de um objecto da classe definida na janela w.addxxxlistener(new MyListenerClass()); i.e., addkeylistener, addmouselistener 3 Gestão de Eventos Gestão de Eventos: Num Listener distinto Listener não precisam chamar qualquer método da janela a que estão associados. public class ClickReporter extends Applet { setbackground(color.yellow); addmouselistener(new ClickListener()); 4 Gestão de Eventos 2

Gestão de Eventos: Num Listener distinto (cont.) import java.awt.event.*; public class ClickListener extends MouseAdapter { public void mousepressed(mouseevent event) { System.out.println("Mouse pressed at (" + event.getx() + "," + event.gety() + ")."); 5 Gestão de Eventos Generalização Pretendemos que quando o evento ClickListener acontecer seja desenhado um circulo Usar getgraphics para obter um objecto Solução: Chamar event.getsource para obter uma referencia da janela ou componente GUI no qual é gerado o evento Converter o resultado para o tipo certo Chamar o método nesta referencia 6 Gestão de Eventos 3

Gestão de Eventos: Num Listener distinto public class CircleDrawer1 extends Applet { setforeground(color.blue); addmouselistener(new CircleListener()); 7 Gestão de Eventos Gestão de Eventos: Num Listener distinto (cont.) import java.awt.event.*; public class CircleListener extends MouseAdapter { private int radius = 25; public void mousepressed(mouseevent event) { Applet app = (Applet)event.getSource(); Graphics g = app.getgraphics(); g.filloval(event.getx()-radius, event.gety()-radius, 2*radius, 2*radius); 8 Gestão de Eventos 4

Gestão de Eventos: Num Listener distinto (resultado) 9 Gestão de Eventos Gestão de Eventos: Implementação de uma interface import java.awt.event.*; public class CircleDrawer2 extends Applet implements MouseListener { private int radius = 25; setforeground(color.blue); addmouselistener(this); 10 Gestão de Eventos 5

Gestão de Eventos: Implementação de uma interface (cont.) public void mouseentered(mouseevent event) { public void mouseexited(mouseevent event) { public void mousereleased(mouseevent event) { public void mouseclicked(mouseevent event) { public void mousepressed(mouseevent event) { Graphics g = getgraphics(); g.filloval(event.getx()-radius, event.gety()-radius, 2*radius, 2*radius); Obrigatório a Implementações de toda a interface 11 Gestão de Eventos Gestão de Eventos: Definição de classe interna import java.awt.event.*; public class CircleDrawer3 extends Applet { setforeground(color.blue); addmouselistener(new CircleListener()); Definição de uma classe no interior de outra, permite a classe interna ter acesso os métodos da classe externa. 12 Gestão de Eventos 6

Gestão de Eventos: Definição de classe interna (cont.) Nota: Continuação da classe do slide anterior private class CircleListener extends MouseAdapter { private int radius = 25; public void mousepressed(mouseevent event) { Graphics g = getgraphics(); g.filloval(event.getx()-radius, event.gety()-radius, 2*radius, 2*radius); 13 Gestão de Eventos Gestão de Eventos: Definição de classe anonima interna public class CircleDrawer4 extends Applet { setforeground(color.blue); addmouselistener (new MouseAdapter() { private int radius = 25; public void mousepressed(mouseevent event) { Graphics g = getgraphics(); g.filloval(event.getx()-radius, event.gety()-radius, 2*radius, 2*radius); ); 14 Gestão de Eventos 7

Estrategias de gestão de eventos: Ben. e Desv. Listener separado Vantagens Pode ignorar eventos que não ser quer processar Uma classe distinta é mais fácil de gerir Desvantagens Necessita de uma passo extra para invocar os métodos no janela principal implementação de uma interface Vantagens Não necessita de passos adicionais para invocar os métodos Desvantagens Tem que implementar todos os métodos de uma interface 15 Gestão de Eventos Estrategias de tratamento de eventos: Ben. e Desv., cont. Classe interna Vantagens Não é necessário implementar métodos para todos os eventos Não necessita fazer chamada ao método Desvantagens um pouco confuso Classe interna anónima Vantagens Não é necessário implementar métodos para todos os eventos Código mais compacto Desvantagens De difícil compreensão 16 Gestão de Eventos 8

Lista de eventos (Sumário) Adapter Class Listener (If Any) Registration Method ActionListener addactionlistener AdjustmentListener addadjustmentlistener ComponentListener ComponentAdapter addcomponentlistener ContainerListener ContainerAdapter addcontainerlistener FocusListener FocusAdapter addfocuslistener ItemListener additemlistener KeyListener KeyAdapter addkeylistener MouseListener MouseAdapter addmouselistener MouseMotionListener MouseMotionAdapter addmousemotionlistener TextListener addtextlistener WindowListener WindowAdapter addwindowlistener 17 Gestão de Eventos Eventos do Rato MouseListener e MouseMotionListener partilham o mesmo tipo de evento Localização dos clicks event.getx() e event.gety() Clicks Duplos Determinado pelo OS, não, pelo programador Chamada event.getclickcount() Distinção dos botões do rato Chamar event.getmodifiers() e comparar com MouseEvent.Button2_MASK para click no botão do meio MouseEvent.Button3_MASK para click no botão de esquerda pode também gerir evento: Shift-click, Alt-click, etc. 18 Gestão de Eventos 9

Correção da Escrita: Textfield KeyListener corrige a escrita ActionListener completa uma palavra com ENTER FocusListener indica alternativas 19 Gestão de Eventos Quadro de Desenho import java.awt.event.*; public class SimpleWhiteboard extends Applet { protected int lastx=0, lasty=0; setbackground(color.white); setforeground(color.blue); addmouselistener(new PositionRecorder()); addmousemotionlistener(new LineDrawer()); protected void record(int x, int y) { lastx = x; lasty = y; 20 Gestão de Eventos 10

Quadro de Desenho(Continuação) private class PositionRecorder extends MouseAdapter { public void mouseentered(mouseevent event) { requestfocus(); // Plan ahead for typing record(event.getx(), event.gety()); public void mousepressed(mouseevent event) { record(event.getx(), event.gety());... 21 Gestão de Eventos Quadro de Desenho(Continuação) //Quando o Utilizador arrasta o rato são desenhas segmentos de linhas private class LineDrawer extends MouseMotionAdapter { public void mousedragged(mouseevent event) { int x = event.getx(); int y = event.gety(); Graphics g = getgraphics(); g.drawline(lastx, lasty, x, y); record(x, y); 22 Gestão de Eventos 11

Quadro de Desenho (Resultado) 23 Gestão de Eventos Quadro de Desenho: Eventos do Teclado (adicionar texto) import java.awt.event.*; public class Whiteboard extends SimpleWhiteboard { protected FontMetrics fm; super.init(); Font font = new Font("Serif", Font.BOLD, 20); setfont(font); fm = getfontmetrics(font); addkeylistener(new CharDrawer()); 24 Gestão de Eventos 12

Quadro de Desenho: Eventos do Teclado (adicionar texto)(cont.)... private class CharDrawer extends KeyAdapter { // When user types a printable character, // draw it and shift position rightwards. public void keytyped(keyevent event) { String s = String.valueOf(event.getKeyChar()); getgraphics().drawstring(s, lastx, lasty); record(lastx + fm.stringwidth(s), lasty); 25 Gestão de Eventos Whiteboard (Results) 26 Gestão de Eventos 13