Manipulação de Eventos

Documentos relacionados
INF1636 PROGRAMAÇÃO ORIENTADA A OBJETOS

INF1337 LINGUAGEM DE PROGRAMAÇÃO ORIENTADA A OBJETOS

Aula 2 Even e to t s d o M ouse

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

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

MANIPULAÇÃO DE EVENTOS

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

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

Objetivos do Capítulo

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

Aula 2 Eventos do Mouse by Pearson Education do Brasil

Manipulando Eventos em Java

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

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

TRATAMENTO DE EVENTOS EM JAVA USANDO SWING. George Gomes Cabral

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

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

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

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

. 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.

Arquivos. Prof. Leonardo Barreto Campos 1

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

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

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

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

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

Componentes Parte 02

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

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

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

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

Interfaces Event-Driven Técnica de Rubberband

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

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

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

MODEL-VIEW-CONTROLER. Prof. Fellipe Aleixo

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

Tiago Alves de Oliveira. Tiago Alves de Oliveira

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

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

Tratamento de Eventos

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

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

Componente JOptionPane Layout Null Tratamento de Eventos. Action Listener

LINGUAGEM DE PROGAMAÇÃO II Criando uma Classe

HABILITANDO A IDE DO ECLIPSE

Elaborando as Interfaces Aulas 43, 44 e 45

Aula Prática Criando Views e Controles

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

Gerenciadores de Layout

1) Responda de acordo com os conceitos de orientação a objetos (0,5).

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

Elaborando as Interfaces Aulas 31, 32 e 33

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

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

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

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

Model-View-Controller (MVC)

Interfaces Gráficas com Swing. Professor Leonardo Larback

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

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

Adding User Interaction

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

Java Standard Edition (JSE)

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

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

MÓDULO 4 SWING Parte 3

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

Componentes Parte 01

JMENU, JDESKTOPPANE E JINTERNALFRAME

Aplicações Gráficas com AWT

Prof. Fernando V. Paulovich 8 de novembro de SCC Programação Orientada a Objetos

Programação II. Cassio Diego

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

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

Prof. Responsáveis Wagner Santos C. de Jesus

05 Como utilizar POO no ambiente gráfico do C#?

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

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

Interfaces. Universidade Católica de Pernambuco Ciência da Computação. Prof. Márcio Bueno.

Programação Visual em Java

Construção de Interfaces Gráficas

Interfaces e Classes Internas

Programação Orientada a Objetos

Introdução à construção de GUIs

Programação Orientada a Objetos

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

Herança. Prof. Fernando V. Paulovich 23 de agosto de 2010

Programação Orientada a Objetos (utilizando C#) Professor Emiliano S. Monteiro Versão 12 Out/2016.

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

Prof. Msc. Vladimir Camelo

Universidade Federal de Uberlândia Faculdade de Computação Programação Orientada a Objetos II Prof. Fabiano Dorça. Padrão Observer (Observador)

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

Tecnólogo em Análise e Desenvolvimento de Sistemas

Classes e Objetos. Prof. Fernando V. Paulovich 9 de agosto de 2010

Java Swing: Netbeans

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

Lista de Exercícios da disciplina Aplicações de Linguagem de Programação Orientada a objetos

Recapitulando. Construtores: (Overload assinatura) public Circle() {...} public Circle(double x, double y, double r) {... }

Transcrição:

Manipulação de Eventos SCC0604 - Programação Orientada a Objetos Prof. Fernando V. Paulovich http://www.icmc.usp.br/~paulovic paulovic@icmc.usp.br Instituto de Ciências Matemáticas e de Computação (ICMC) Universidade de São Paulo (USP) 25 de julho de 2010

Conceitos Introdutórios Sumário 1 Conceitos Introdutórios 2 Classes Adaptadoras 3 Hierarquia de Eventos AWT 4 Eventos Semânticos e de Baixo Nível 5 Exemplo: Multicast 6 Recursos Extra: Alterando o Estilo Visual da Aplicação

Conceitos Introdutórios Sumário 1 Conceitos Introdutórios 2 Classes Adaptadoras 3 Hierarquia de Eventos AWT 4 Eventos Semânticos e de Baixo Nível 5 Exemplo: Multicast 6 Recursos Extra: Alterando o Estilo Visual da Aplicação

Conceitos Introdutórios Manipulação de Eventos A monitoração do que está ocorrendo em uma interface gráca é feita através de eventos Na manipulação de eventos, temos dois extremos: o originador (interface gráca) e o ouvinte (quem trata) dos eventos Qualquer classe podem ser um ouvinte de um evento, para isso é necessário registrar essa classe como um ouvinte de uma classe originadora

Conceitos Introdutórios Manipulação de Eventos Em Java um evento é um objeto do tipo java.util.eventobject, ou um subtipo como ActionEvent ou WindowEvent Origens diferentes de eventos podem produzir eventos diferentes O mouse gera eventos diferentes do teclado

Conceitos Introdutórios Manipulação de Eventos Visão geral da manipulação de eventos Um objeto ouvinte é uma instância de uma classe que implementa uma interface ouvinte Uma origem de evento é um objeto que pode registrar objetos ouvintes e envia a estes os objetos de eventos A origem de evento envia objetos eventos para todos os ouvintes registrados quando esse evento ocorre Os objetos ouvintes vão então usar a informação do objeto evento recebido para determinar sua reação ao evento

Conceitos Introdutórios Diagrama Esquemático

Conceitos Introdutórios Manipulação de Eventos O objeto ouvinte é registrado no objeto origem com a seguinte código 1 objetoeventoorigem.addeventlistener(objetoouvinte) Por exemplo: 1 Mypanel painel = new MyPanel(); 2 JButton botao = new JButton("Limpar"); 3 botao.addactionlistener(painel);

Conceitos Introdutórios Manipulação de Eventos Um código como anterior exige que a classe ao qual o objeto ouvinte pertença seja implementada pela interface apropriada (ActionListener) Para implementar a interface ActionListener, a classe ouvinte precisa ter um método (actionperformed) que recebe o evento ActionEvent

Conceitos Introdutórios Manipulação de Eventos 1 class MyPanel extends JPanel implements ActionListener { 2 3 public void actionperformed(actionevent evt) { 4 //a reação ao clique do botão 5 } 6 }

Conceitos Introdutórios Criando Botões Um botão é um objeto do tipo JButton 1 JButton yellowbutton = new JButton("Yellow"); Para se adicionar um botão a um painel, usamos o método add()

Conceitos Introdutórios Criando a Adicionando Botões 1 public class MyPanel extends JPanel implements ActionListener { 2 3 private JButton yellowbutton = new JButton("Yellow"); 4 private JButton bluebutton = new JButton("Blue"); 5 private JButton redbutton = new JButton("Red"); 6 7 public MyPanel() { 8 this.add(yellowbutton); 9 this.add(bluebutton); 10 this.add(redbutton); 11 } 12 13... 14 }

Conceitos Introdutórios Criando a Adicionando Botões 1 public class FirstFrame extends JFrame{ 2 3 public FirstFrame() { 4 settitle("firstframe"); 5 setsize(300, 200); 6 this.setdefaultcloseoperation(exit_on_close); 7 Container contentpane = getcontentpane(); 8 contentpane.add(new MyPanel()); 9 } 10 11 public static void main(string[] args) { 12 JFrame frame = new FirstFrame(); 13 frame.setvisible(true); 14 } 15 }

Conceitos Introdutórios Resultado

Conceitos Introdutórios Tratando os Eventos Após adicionar os botões é necessário tratar os eventos dos mesmos Isto requer a implementação da interface ActionListener - implementação do método actionperformed() Para vericar qual evento ocorreu, podemos usar o método getsource()

Conceitos Introdutórios Capturando os Eventos 1 public void actionperformed(actionevent evt) { 2 Object source = evt.getsource(); 3 4 if(source == yellowbutton) { 5 //trata evento 6 } else if(source == bluebutton) { 7 //trata evento 8 } else if(source == redbutton) { 9 //trata evento 10 } 11 }

Conceitos Introdutórios Capturando os Eventos Após determinarmos que o painel contendo os botões irá tratar os eventos, devemos informar aos botões para eles enviarem esses eventos ao painel Para isso usamos o método addactionlistener() junto a classe que cria os botões

Conceitos Introdutórios Capturando os Eventos 1 public class MyPanel extends JPanel implements ActionListener { 2 3 private JButton yellowbutton = new JButton("Yellow"); 4 private JButton bluebutton = new JButton("Blue"); 5 private JButton redbutton = new JButton("Red"); 6 7 public MyPanel() { 8 this.add(yellowbutton); 9 this.add(bluebutton); 10 this.add(redbutton); 11 12 yellowbutton.addactionlistener(this); 13 bluebutton.addactionlistener(this); 14 redbutton.addactionlistener(this); 15 } 16 17... 18 }

Conceitos Introdutórios Código 1 class ButtonPanel extends JPanel implements ActionListener { 2 3 public void actionperformed(actionevent evt) { 4 Object source = evt.getsource(); 5 if(source == yellowbutton) setbackground(color.yellow); 6 else if(source == bluebutton) setbackground(color.blue); 7 else if(source == redbutton)setbackground(color.red); 8 } 9 10... 11 }

Conceitos Introdutórios Descobrindo quem Gerou o Evento Uma outra forma de saber quem gerou o evento é utilizar o método, especíco da classe ActionEvent, chamado getactioncommand() Esse método retorna uma string associada a ação - no caso dos botões, essa string é, a priori, o rótulo dos mesmos

Conceitos Introdutórios Tratando os Eventos 1 class ButtonPanel extends JPanel implements ActionListener { 2 3 public void actionperformed(actionevent evt) { 4 String command = evt.getactioncommand(); 5 if(command == "Yellow") setbackground(color.yellow); 6 else if(command == "Blue") setbackground(color.blue); 7 else if(command == "Red")setBackground(Color.red); 8 } 9 10... 11 }

Conceitos Introdutórios Problemas com Rótulos Evidentemente, essa abordagem pode trazer problemas, principalmente se for necessário mudar o rótulo de um menu Para evitar esse problema, é possível se especicar uma string de rótulo do comando por meio do método setactioncommand() no momento da criação do botão: 1 yellowbutton.setactioncommand("amarelo");

Classes Adaptadoras Sumário 1 Conceitos Introdutórios 2 Classes Adaptadoras 3 Hierarquia de Eventos AWT 4 Eventos Semânticos e de Baixo Nível 5 Exemplo: Multicast 6 Recursos Extra: Alterando o Estilo Visual da Aplicação

Classes Adaptadoras Captura de Eventos de Janelas Como já foi visto, quando um usuário tenta fechar uma janela, um evento WindowEvent é gerado pela classe JFrame que representa a janela Assim, nós precisamos ter um objeto ouvinte apropriado para tratar tal evento e adicioná-lo à lista de ouvintes

Classes Adaptadoras Captura de Eventos de Janelas 1 public class FirstFrame extends JFrame{ 2 3 public FirstFrame(){ 4 addwindowlistener(new Terminator()); 5 } 6 7... 8 }

Classes Adaptadoras Captura de Eventos de Janelas O ouvinte de janela Terminator precisa ser um objeto de uma classe que implemente a interface WindowListener Quando uma classe implementa a interface WindowListener a mesma precisa que os seguintes métodos sejam implementados public void windowactivated(windowevent e) public void windowclosed(windowevent e) public void windowclosing(windowevent e) public void windowopened(windowevent e)...

Classes Adaptadoras Captura de Eventos de Janelas Assim, como qualquer outra classe Java que implementa uma interface, todos os métodos da interface devem ser providos Se estivermos interessados em somente um método (p.ex. windowclosing()), não somente esse método deve ser implementados, mas todos os outros, porém com corpos vazios

Classes Adaptadoras Captura de Eventos de Janelas 1 class Terminator implements WindowListener { 2 public void windowactivated(windowevent e) {} 3 public void windowclosed(windowevent e) {} 4 public void windowclosing(windowevent e) {System.exit(0);} 5 public void windowopened(windowevent e) {} 6 public void windowiconified(windowevent e) {} 7... 8 }

Classes Adaptadoras Classes Adaptadoras Digitar código para métodos que não fazem nada é um trabalho não muito atraente, assim Java oferece as classes adaptadoras, que implementam tais métodos com corpo vazio Dessa forma, ao invés de se implementar uma interface ouvinte pode-se estender uma classe adaptadora Para o controle de Janela, a classe adaptadora é chamada WindowAdapter

Classes Adaptadoras Classes Adaptadoras 1 class Terminator extends WindowAdapter { 2 public void windowclosing(windowevent e) { 3 System.exit(0); 4 } 5 }

Hierarquia de Eventos AWT Sumário 1 Conceitos Introdutórios 2 Classes Adaptadoras 3 Hierarquia de Eventos AWT 4 Eventos Semânticos e de Baixo Nível 5 Exemplo: Multicast 6 Recursos Extra: Alterando o Estilo Visual da Aplicação

Hierarquia de Eventos AWT A Hierarquia de Eventos AWT Os eventos Java são objetos instanciados a partir de classes descendentes da classe java.util.eventobject Uma lista de tipos de eventos AWT destinados a ouvintes ActionEvent AdjustmentEvent ComponentEvent ContainerEvent FocusEvent ItemEvent KeyEvent MouseEvent TextEvent WindowEvent

Hierarquia de Eventos AWT A Hierarquia de Eventos AWT Existem onze interfaces ouvintes para esses eventos ActionListener AdjustmentListener ComponentListener FocusListener ItemListener KeyListener MouseListener MouseMotionListener TextListener WindowListener

Hierarquia de Eventos AWT A Hierarquia de Eventos AWT Dessas interfaces (especicamente aquelas que têm mais de um método), sete vêm junto com classes adaptadoras ComponentAdapter ContainerAdapter FocusAdapter KeyAdapter MouseAdapter MouseMotionAdapter WindowAdapter

Eventos Semânticos e de Baixo Nível Sumário 1 Conceitos Introdutórios 2 Classes Adaptadoras 3 Hierarquia de Eventos AWT 4 Eventos Semânticos e de Baixo Nível 5 Exemplo: Multicast 6 Recursos Extra: Alterando o Estilo Visual da Aplicação

Eventos Semânticos e de Baixo Nível Eventos Semânticos e de Baixo Nível no AWT O AWT faz distinção entre eventos de baixo nível e eventos semânticos Um evento semântico expressa o que o usuários está fazendo, como clicando aquele botão Já os eventos de baixo nível são os eventos que tornam isso possível

Eventos Semânticos e de Baixo Nível Eventos Semânticos e de Baixo Nível no AWT Há 4 classes de eventos semânticos ActionEvent: para clique de botão, seleção de menu, etc., clique duplo em um item de uma lista, tecla <ENTER> pressionada em um campo de texto AdjustmentEvent: para ajuste de barra de rolagem ItemEvent: para seleção de um conjunto de caixas de seleção ou itens de uma lista TextEvent: para a modicação de um campo de texto ou área de texto

Eventos Semânticos e de Baixo Nível Eventos Semânticos e de Baixo Nível no AWT Há 6 classes de eventos de baixo nível ComponentEvent: redimensionamento, movimentação, exibição ou ocultação do componente KeyEvent: tecla pressionada ou liberada MouseEvent: botão do mouse pressionado, liberado,movido ou arrastado FocusEvent: componente recebeu ou perdeu foco WindowEvent: janela ativada, desativada, minimizada, restaurada ou fechada ContainerEvent: componente adicionado ou removido

Eventos Semânticos e de Baixo Nível Eventos de Foco Na linguagem Java, um componente tem o foco se puder receber pressionamentos de teclas Somente um componente pode ter o foco de cada vez Um componente pode ganhar o foco se o usuário clicar o mouse dentro dele, ou quando o usuário usa a tecla <TAB> para trocar de componente A priori, os componentes são percorridos da esquerda para a direita e de cima para baixo quando o <TAB> é pressionado

Eventos Semânticos e de Baixo Nível Eventos de Foco Por m, pode-se usar o método requestfocus() para mover o foco até qualquer componente visível em tempo de execução Um ouvinte de foco precisa implementar dois métodos: focusgained() e focuslost(). Esses métodos são acionados quando a origem do evento ganhar ou perder o foco

Eventos Semânticos e de Baixo Nível Eventos de Foco O método getcomponent() informa o componente que recebeu ou perdeu o foco, e o método istemporary() retorna true se a mudança de foco for temporária

Eventos Semânticos e de Baixo Nível Eventos de Foco 1 public class MyPanel extends JPanel { 2 3 private JButton yellowbutton = new JButton("Yellow"); 4 private JButton bluebutton = new JButton("Blue"); 5 private JButton redbutton = new JButton("Red"); 6 7 public MyPanel() { 8 this.add(yellowbutton); 9 this.add(bluebutton); 10 this.add(redbutton); 11 12 yellowbutton.addactionlistener(new OuvinteBotao()); 13 bluebutton.addactionlistener(new OuvinteBotao()); 14 redbutton.addactionlistener(new OuvinteBotao()); 15... 16 } 17 }

Eventos Semânticos e de Baixo Nível Eventos de Foco 1 public class MyPanel extends JPanel { 2 3 class OuvinteBotao implements ActionListener { 4 public void actionperformed(actionevent evt) { 5 Object source = evt.getsource(); 6 if(source == yellowbutton) setbackground(color.yellow); 7 else if(source == bluebutton) setbackground(color.blue); 8 else if(source == redbutton)setbackground(color.red); 9 } 10 } 11 12... 13 }

Eventos Semânticos e de Baixo Nível Eventos de Foco 1 public class MyPanel extends JPanel { 2... 3 class OuvinteFoco extends FocusAdapter { 4 public void focusgained(focusevent e) { 5 Object source = e.getcomponent(); 6 if(source == yellowbutton) setbackground(color.yellow); 7 else if(source == bluebutton) setbackground(color.blue); 8 else if(source == redbutton)setbackground(color.red); 9 } 10 } 11 }

Eventos Semânticos e de Baixo Nível Eventos de Foco 1 public class FirstFrame extends JFrame { 2 3 public FirstFrame() { 4 settitle("firstframe"); 5 setsize(300, 200); 6 this.setdefaultcloseoperation(exit_on_close); 7 Container contentpane = getcontentpane(); 8 contentpane.add(new MyPanel()); 9 } 10 11 public static void main(string[] args) { 12 JFrame frame = new FirstFrame(); 13 frame.setvisible(true); 14 } 15 }

Eventos Semânticos e de Baixo Nível Eventos de Janela Como já foi visto, é possível ser noticado sempre que uma janela Foi aberta Foi fechada Tornou-se ativa Tornou-se inativa Foi minimizada Foi restaurada, voltando ao tamanho original Está tentando ser fechada pelo usuário

Eventos Semânticos e de Baixo Nível Eventos de Teclado Quando uma tecla é pressionada, um evento KeyEvent.KEY_PRESSED é gerado; quando a mesma é solta, um evento KeyEvent.KEY_RELEASE é gerado Esses eventos são capturados pelos métodos keypressed() e KeyReleased() de qualquer classe que implemente a interface KeyListener Esses métodos podem ser usados para capturar pressionamento simples de teclas Um terceiro método, keytyped(), combina esses dois, informando os caracteres gerados pelas teclas pressionadas pelo usuário

Eventos Semânticos e de Baixo Nível Eventos de Teclado Aqui novamente vamos usar uma classe adaptadora, KeyAdapter, para não ser necessário implementar todos os métodos de tratamento de teclado Para se trabalhar com esses métodos, primeiro deve-se vericar o código da tecla com o método getkeycode() Para identicar teclas, Java usa a seguinte nomenclatura VK_A... VK_Z VK_0... VK_9 VK_COMMA, VK_ENTER, etc.

Eventos Semânticos e de Baixo Nível Código 1 public class MyPanel extends JPanel { 2... 3 class OuvinteTeclado extends KeyAdapter { 4 5 public void keypressed(keyevent evt) { 6 if(evt.getkeycode() == KeyEvent.VK_ENTER) { 7... 8 } 9 } 10 } 11 }

Eventos Semânticos e de Baixo Nível Eventos de Teclado Para saber se as teclas shift, alt, ctrl ou meta estão pressionadas, é possível empregar os seguintes métodos isshhiftdown() isaltdown() iscrtldown() ismetadown()

Eventos Semânticos e de Baixo Nível Eventos de Mouse Não é necessário processar explicitamente os eventos do mouse caso só seja necessário vericar se um usuário clicou em um botão Essas operações são processadas internamente e convertidas em eventos semânticos apropriados Por exemplo, pode-se reagir a esses eventos com um método actionperformed()

Eventos Semânticos e de Baixo Nível Eventos de Mouse Contudo é possível capturar os eventos de movimentação de um mouse Quando um cliente clica em um botão de um mouse três métodos ouvintes são chamados: mousepressed(), mousereleased() e mouseclicked() Para maiores informações sobre os eventos de mouse: seção Eventos de Mouse, Core Java 2 Volume I (pág. 305-313)

Exemplo: Multicast Sumário 1 Conceitos Introdutórios 2 Classes Adaptadoras 3 Hierarquia de Eventos AWT 4 Eventos Semânticos e de Baixo Nível 5 Exemplo: Multicast 6 Recursos Extra: Alterando o Estilo Visual da Aplicação

Exemplo: Multicast Multidifusão (Multicast) Anteriormente várias origens de eventos informavam o mesmo ouvinte de eventos Agora vamos fazer o oposto: o mesmo evento será enviado para mais de um objeto ouvinte Isto é chamado de multidifusão A multidifusão é útil quando um evento desperta o interesse potencial de muitas partes Para isso basta adicionar vários ouvintes a uma origem de eventos

Exemplo: Multicast Multidifusão (Multicast)

Exemplo: Multicast Multidifusão (Multicast) 1 public class SimpleFrame extends JFrame implements ActionListener { 2 3 public void actionperformed(actionevent e) { 4 dispose(); 5 } 6 }

Exemplo: Multicast Multidifusão (Multicast) 1 public class MulticastPanel extends JPanel implements ActionListener { 2 private int counter=0; 3 private JButton closeallbutton= new JButton("Close all"); 4 private JButton newbutton= new JButton("New"); 5 6 public MulticastPanel() { 7 this.add(newbutton); 8 this.add(closeallbutton); 9 newbutton.addactionlistener(this); 10 } 11 12 public void actionperformed(actionevent e) { 13 SimpleFrame f = new SimpleFrame(); 14 counter++; 15 f.settitle("window " + this.counter); 16 f.setbounds(30*counter, 30*counter, 200, 150); 17 f.show(); 18 closeallbutton.addactionlistener(f); 19 } 20 }

Exemplo: Multicast Multidifusão (Multicast) 1 public class MulticastFrame extends JFrame { 2 3 public MulticastFrame() { 4 this.settitle("multicasttest"); 5 this.setsize(300,200); 6 this.setdefaultcloseoperation(exit_on_close); 7 8 Container content = this.getcontentpane(); 9 content.add(new MulticastPanel()); 10 } 11 }

Exemplo: Multicast Multidifusão (Multicast) 1 public class MulticastTest { 2 3 public static void main(string[] args) { 4 JFrame frame = new MulticastFrame(); 5 frame.show(); 6 } 7 }

Recursos Extra: Alterando o Estilo Visual da Aplicação Sumário 1 Conceitos Introdutórios 2 Classes Adaptadoras 3 Hierarquia de Eventos AWT 4 Eventos Semânticos e de Baixo Nível 5 Exemplo: Multicast 6 Recursos Extra: Alterando o Estilo Visual da Aplicação

Recursos Extra: Alterando o Estilo Visual da Aplicação Alterando Estilo Visual Existem três possíveis estilos visuais de apresentação em Java Motif: com.sun.java.swing.plaf.motif.motiflookandfeel Windows: com.sun.java.swing.plaf.windows.windowslookandfeel Metal: javax.swing.plaf.metal.metallookandfeel O estilo windows só esta presente para o sistema operacional Microsoft Windows, e por padrão o estilo usado é o metal

Recursos Extra: Alterando o Estilo Visual da Aplicação Alterando Estilo Visual 1 public class FirstFrame extends JFrame{ 2 3 public FirstFrame() { 4 settitle("firstframe"); 5 setsize(300, 200); 6 this.setdefaultcloseoperation(exit_on_close); 7 Container contentpane = getcontentpane(); 8 contentpane.add(new MyPanel()); 9 10 try { 11 UIManager.setLookAndFeel("com.sun.java.swing.plaf.motif. MotifLookAndFeel"); 12 SwingUtilities.updateComponentTreeUI(contentPane); 13 } catch(exception e) { } 14 15 } 16 17... 18 }