Tratamento de Eventos

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

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

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

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

Programação Gráfica em Java.

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

Gestão de eventos do Rato e teclado

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

Interface Gráfica. Prof. Marcelo Cohen

1 Criando um aplicativo visual em Java

MÓDULO 4 SWING Parte 3

Construção de Interfaces Gráficas

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

Tutorial de Computação Introdução a Programação Gráfica em Java para MEC1100 v

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

Aplicações Gráficas com AWT

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

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

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

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

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

PROGRAMAÇÃO PARA DISPOSITIVOS MÓVEIS

Eclipse IDE Dá-se importância aos antepassados quando já não temos nenhum. Francois Chateaubriand

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

Técnicas de Programação II

Curso de Aprendizado Industrial Desenvolvedor WEB

Curso Java Starter. 1

Programação Orientada a Objetos

Desenvolvimento de Aplicações Desktop

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

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

Desenhar. Desenhar: Retângulo. Seleção alternada. Objeto. Clique na ferramenta retângulo. Crie mais 4 retângulos em posições aleatórias

Aula 2 Even e to t s d o M ouse

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

Programação Gráfica Parte 2 Versão em C 2006 PUCPR Tutoria de Jogos 1º Ano

[CANCELAR] - Limpa todos os campos e desabilita campos e botões, exceto [NOVO] e [PESQUISAR].

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

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

Apostilas OBJETIVA Atendente Comercial / Carteiro / Op. Triagem e Transbordo CORREIOS - Concurso Público º CADERNO. Índice

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

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

ÍNDICE. Tela de Configuração Dados de Etiqueta Configuração da Impressora Configuração do Papel Itens para Inserção...

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

JAVA NETBEANS PGOO Prof. Daniela Pires Conteúdo

MATERIAL DE APRESENTAÇÃO DO SCRATCH

Programação Orientada a Objetos II

PROGRAMAÇÃO EM C# COM VISUAL STUDIO.NET

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

Como construir aplicaçõ e applets

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

MAIS CONTROLE SOFTWARE Controle Financeiro / Fluxo de Caixa (MCS Versão ) Índice

Tabelas vista de estrutura

Manual do Sistema "Vida - Controle Financeiro Pessoal" Editorial Brazil Informatica

FEMA Fundação Educacional Machado de Assis INFORMÁTICA Técnico em Segurança do Trabalho P OW ERPOI NT. Escola Técnica Machado de Assis Imprensa

CADERNOS DE INFORMÁTICA Nº 1. Fundamentos de Informática I - Word Sumário

Interface Gráficas Parte I. Bruno Crestani Calegaro

Especificação do Trabalho

Atenção ainda não conecte a interface em seu computador, o software megadmx deve ser instalado antes, leia o capítulo 2.

Para o PowerPoint, assim como para vários softwares de apresentação, uma apresentação é um conjunto de slides.

JTABLE STUDENT CONTROL JSC Gil Eduardo de Andrade / Emílio Rudolfo Fey Neto

Especialização em Engenharia de Software - CEUT

Interfaces Gráficas: Interações Complexas

Comandos de repetição For (inicialização; condição de execução; incremento/decremento) { //Código }

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

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.

Programação de Interfaces Gráficas. Aula 1. Carlos Eduardo de Carvalho Dantas

Figura 1: tela inicial do BlueControl COMO COLOCAR A SALA DE INFORMÁTICA EM FUNCIONAMENTO?

Manual do Spectacle. Boudhayan Gupta Boudhayan Gupta Tradução: André Marcelo Alvarenga

PowerPoint Operações básicas, criação de uma apresentação, edição e formatação, inserção de gráficos e desenhos

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

Compositor de Impressão do QGIS

Para o OpenOffice Impress, assim como para vários softwares de apresentação, uma apresentação é um conjunto de slides.

Usando o do-file editor Automatizando o Stata

Primeiros passos das Planilhas de Obra v2.6

Autor: Tiago Lone Nível: Básico Criação: 19/12/2005 Última versão: 18/12/2006. PdP. Pesquisa e Desenvolvimento de Produtos

Programação por Objectos. Java

Informática básica Telecentro/Infocentro Acessa-SP

Programação Visual em Java

SEI Superintendência de Estudos Econômicos e Sociais da Bahia Av Luiz Viana Filho, 435-4ª avenida, 2º andar CAB CEP Salvador - Bahia Tel.

Geometria Dinâmica com o GeoGebra

Estatística no EXCEL

Pacote Java Swing Parte 1

Programação Orientada a Objetos (DPADF 0063)

,QWURGXomRDR(GLWRUGH $SUHVHQWDo}HV3RZHU3RLQW

Considere um alarme residencial ligado a um CLP compacto com os seguintes I/Os:

Interface Gráfica com o Usuário (GUI) Profa. Isabel Harb Manssour (Material adaptado das aulas da Profa. Luciana Nedel e do Prof.

Programação Orientada a Objetos: Lista de exercícios #1. Bruno Góis Mateus

Natureza do Software e dos Sistemas

Superintendência Regional de Ensino de Ubá - MG Núcleo de Tecnologia Educacional NTE/Ubá. LibreOffice Impress Editor de Apresentação

BR DOT COM SISPON: MANUAL DO USUÁRIO

( TIAGO DOS SANTOS MENDES ) PROGRAMAÇÃO DISPOSITIVOS MOVEIS ANDROID STUDIO

Linguagem Java - Prof. Luciana Porcher Nedel 1. Um container genérico e visual. Ela trabalha em cooperação com o controle de layouts.

Aula 01 Conceitos Iniciais sobre Excel 2010

Exercícios de Revisão Java Básico

Sistema topograph 98. Tutorial Módulo Fundiário

Transcrição:

Tratamento de Eventos Prof. Marcelo Cohen 1. Visão Geral Para implementar a funcionalidade de uma interface gráfica, pode-se fazer uso de uma repetição sem fim: Faz algum processamento Verifica se o mouse foi movido, se algum botão ou alguma tecla foi pressionada. Realiza alguma ação se necessário. Repete o ciclo Esse tipo de programação é considerado extremamente ineficiente, pois é necessário explicitamente ler os periféricos para tratar as ações do usuário Dessa forma, o programa perde muito tempo fazendo essas leituras Em um sistema multitarefa, esse tipo de implementação seria inviável, pois os demais processos ficariam muito tempo parados 1

2. Modelo de Eventos em Java A interface gráfica em Java é dita orientada a eventos: Cada vez que um usuário clica em um botão, seleciona um item em uma lista, ou pressiona uma tecla, o sistema operacional gera um evento Se uma aplicação está interessada em um evento específico (por exemplo, clique em um botão), deve solicitar ao sistema para escutar o evento Se a aplicação não está interessada, seu processamento continua de forma normal. É importante observar que a aplicação não espera pela ocorrência de eventos: isso é controlado pelo sistema Para que um componente ou container possa escutar eventos, é preciso instalar um listener Listeners são classes criadas especificamente para o tratamento de eventos Há dois tipos de eventos: baixo nível e semânticos. Eventos de baixo nível incluem: eventos de container (inserção ou remoção de componente) eventos de foco (mouse entrou ou saiu de um componente) eventos de entrada: teclado e mouse eventos de janela: open, close, resize, minimize, etc Eventos semânticos incluem: eventos de ação: notificam a ação de um componente específico (ex: clique em um botão) eventos de ajuste: movimento de um scrollbar, por exemplo eventos de item: seleção de um elemento em uma lista, checkbox, etc eventos de texto: alteração do texto em um JTextArea, JTextField, etc 2

Como usar os listeners? Listeners são implementados através de interfaces Uma interface define um conjunto de métodos que uma classe deve implementar mas não define como esses métodos devem ser implementados Ou seja, é um modelo de como escrever esses métodos Não confundir com classes abstratas: as interfaces não servem para criar novas classes, mas sim para implementar funcionalidades diversas! Uma classe implementa uma ou mais interfaces De certa forma, substitui a herança múltipla em Java Exemplo: MouseListener - interface para eventos de mouse Exemplo: MouseListener - interface para eventos de mouse mouseclicked(mouseevent e) - chamado quando o botão do mouse é clicado (e solto) sobre um componente mousepressed(mouseevent e) - chamado quando o botão do mouse é clicado sobre um componente mousereleased(mouseevent e) - chamado quando o botão do mouse é solto sobre um componente mouseentered(mouseevent e) - chamado quando o mouse entra na área de um componente mouseexited(mouseevent e) - chamado quando o mouse deixa a área de um componente MouseEvent é uma classe que representa eventos de mouse Cada listener utiliza uma classe específica para representar o evento, de acordo com o tipo que será gerado 3

Exemplo de utilização: cada clique em um botão deverá incrementar um contador na tela import javax.swing.*; import java.awt.event.*; Para usar eventos class TestaEventos extends JFrame implements ActionListener JButton but; JLabel texto; JPanel painel; int cont; Eventos de botão public TestaEventos() public TestaEventos() // cria um frame com tudo dentro super("swing Application"); cont = 0; // zera contador painel = new JPanel(); painel.setlayout(new BoxLayout(painel,BoxLayout.Y_AXIS)); painel.add(but); painel.add(texto); // Instala o listener para ações no botão but.addactionlistener(this); getcontentpane().add(painel); // Método exigido pela interface ActionListener public void actionperformed(actionevent e) cont++; texto.settext("number of button clicks: "+cont); 4

Classe ActionEvent: método getactioncommand() - retorna o rótulo do botão (String), por default método getsource() - retorna uma referência ao Component que gerou o evento (no caso, um JButton) Pode-se usar esses métodos para gerenciar eventos de mais do que um componente, com o mesmo listener Exemplo: dois botões class TestaEventos2 extends JFrame implements ActionListener JButton but1, but2; public TestaEventos() but1.addactionlistener(this); but2.addactionlistener(this); public void actionperformed(actionevent e) if(e.getsource() == but1) // botão 1 else if(e.getsource() == but2) // botão 2 Algumas interfaces (listeners) são muito extensas MouseListener e MouseMotionListener têm sete métodos E se quisermos usar apenas um??? Somos obrigados a definir todos os métodos da interface, o que obviamente não é muito prático Solução: classes adapter 3. Classes Adapter Implementam uma interface Definem todos os métodos, com o corpo vazio (sem código) Basta então extendermos uma classe adapter! Sobrescrevemos os métodos que desejamos utilizar 5

Classes adapter e listeners equivalentes ComponentAdapter ContainerAdapter FocusAdapter KeyAdapter MouseAdapter MouseMotionAdapter WindowAdapter ComponentListener ContainerListener FocusListener KeyListener MouseListener MouseMotionListener WindowListener Não há ActionAdapter, pois na interface ActionListener só há um método: actionperformed(..) Uma vez criada a classe que implementa a interface ou define uma subclasse de adapter, esta precisa ser instanciada e o objeto registrado como listener Estas classes criadas para tratamento de eventos podem ser anônimas, ou seja, serem declaradas como inner classes (classes internas) Exemplo 1: usando uma classe interna anônima para tratar o evento gerado quando se pressiona um botão class TestaEventos3 extends JFrame JButton but1, but2; public TestaEventos3() but1.addactionlistener( new ActionListener() public void actionperformed(actionevent e) System.out.println( Botão 1 ); ); Observe que se forem utilizadas classes internas anônimas, não será possível tratar múltiplos componentes Para cada componente deverá ser escrita uma classe interna anônima Útil em alguns casos, especialmente quando o tratamento do evento for simples e rápido Não aconselhável para código de tratamento que seja muito longo 6

Exemplo 2: usando uma classe interna anônima para tratar eventos de clique do mouse class TestaEventos4 extends JFrame JButton but1, but2; public TestaEventos4() but1.addmouselistener( new MouseAdapter() public void mouseclicked(mouseevent e) System.out.println( Clicou ); public void mousereleased(mouseevent e) System.out.println( Soltou ); ); Observe que só sobrescrevemos os eventos desejados: mouseclicked(..) e mousereleased(..) Exemplo 3: usando uma classe interna anônima para tratar o evento gerado quando se clica no botão de fechar em uma janela (frame) class TestaEventos5 extends JFrame JButton but1, but2; public TestaEventos5() // adiciona um WindowListener no frame addwindowlistener( new WindowAdapter() public void windowclosing(windowevent e) System.exit(0); // fecha e sai do programa ); Este é o exemplo mais utilizado, pois permite controlarmos o encerramento do programa se o usuário tentar fechar a janela 7

Exemplo 4: aplicação tem uma área de desenho (um JPanel), um botão e um label. Cada clique no JPanel desenha um pequeno círculo na posição Código organizado em duas classes: TestaMouse - classe principal, cria a interface gráfica AreaDesenho - classe para implementar a área de desenho, gerenciar os clicks e manter a lista de círculos já adicionados Exercícios 1) Altere o programa do exemplo de maneira que o mesmo ligue cada duas bolinhas por uma reta. 2) Altere o exercício 1 de maneira que toda a vez que o usuário clicar em uma bolinha esta mude de cor. 3) Altere o exercício 2 de forma que o usuário possa arrastar as bolinhas sobre a área de desenho e não apenas inserir novas. Consulte a documentação da classe MouseMotionAdapter para verificar como detectar os deslocamentos do mouse enquanto clicado. 8