Sunteți pe pagina 1din 20

Introduo ao desenvolvimento de interfaces grficas (Tratamento de Eventos)

Aula: 27/08/2012
Prof.: Paulo C. Barreto

2 Sem./2012 4 Srie
Cincia da Computao
Faculdade Anhanguera de Santa Brbara Disciplina: Programao Orientada a Objetos II

Cronograma de Aulas (Temtico)

Introduo ao desenvolvimento de interfaces grficas (Tratamento de Eventos)

Objetivos da aula de hoje


Tratamento de eventos
Eventos de teclado Eventos de mouse

Introduo
Programas com interfaces grficas esperam por eventos do usurio e executam tarefas (aes) em conseqncia destes eventos.

Normalmente eventos esto associados a elementos da interface, por exemplo:


Clicar boto com o mouse; Digitar texto em uma rea de texto; Fechar uma janela; Marcar uma opo em uma caixa de seleo.

Tratamento por delegao


A verso 1.1 de Java introduziu mudanas significativas no tratamento de eventos em AWT, usando o novo pacote java.awt.event:

instancia-se diretamente os componentes sem redefinir tratadores; para cada componente e cada evento de interesse cadastra-se um objeto Listener; um mtodo especial do Listener ser invocado automaticamente em resposta a eventos.

Tratamento por delegao


Vantagens

reduz-se a necessidade de herana, que fica reservada para verdadeiras extenses ou revises de aparncia/comportamento;
reduz-se overhead1 pos apenas eventos de interesse so captados; evitando-se o tratador genrico, reduz-se a complexidade de discernir a ao a tomar em cada evento; o cdigo de tratamento fica menos vinculado construo da interface.

1 overhead: cdigo extra que tem que ser armazenado para organizar o programa.

Tratamento por delegao


Estratgia bsica (exemplo: JButton)

cria-se uma classe auxiliar que implementa uma interface listener (no caso de JButton, ActionListener)
import java.awt.event.*; class Listener1 implements ActionListener{

a classe deve implementar um mtodo a ativar em caso de evento:


public void actionPerformed (ActionEvent ev) { System.out.println (Teste acionado); }

Tratamento por delegao


na classe que implementa a interface do usurio uma instncia da classe listener cadastrada a cada componente de interesse:
import java.awt.event.*; import javax.swing.*; O mtodo public class Evento1 extends JFrame{ L1.actionPerformed public Evento1 (){ invocado em cada ser ... ativao (click) de b1. JButton b1 = new JButton (Teste); Listener1 L1 = new Listener1 (); b1.addActionListener (L1); add (b1); ... } }

Objeto evento

Tratamento por delegao

O pacote java.awt.event define classes representando eventos semnticos como: ActionEvent: boto ou item de lista ativados ItemEvent: item selecionado TextEvent: contedo de item texto alterado AdjustmentEvent: valor numrico ajustado

Tratamento por delegao


Para alguns componentes pode ser interessante detectar eventos de baixo nvel como: KeyEvent: tecla ativada MouseEvent: apontador movido/boto pressionado FocusEvent: componente ganhou/perdeu foco Eventos semntico abstraem detalhes (vrios eventos de baixo nvel diferentes podem causar um evento Action).

A maior parte dos componentes pode ser gerenciada apenas com eventos semnticos. So exceo componentes genricos como Canvas2.

2 Canvas: vide sala virtual Canvas.doc

Tratamento por delegao


java.util.EventObject java.awt.AWTEvent

java.awt.event. ActionEvent

java.awt.event. TextEvent

java.awt.event. ComponentEvent

java.awt.event. ItemEvent

java.awt.event. AdjustmentEvent

java.awt.event. InputEvent

java.awt.event. WindowEvent

...

Mtodos importantes de java.util.EventObject Object getSource() entidade originando o evento

Componente x Listener x evento


Componentes Mtodos do componente para cadastrar Listeners void addActionListener (ActionListener) void removeActionListener (ActionListener) JCheckbox void addItemListener (ItemListener)

Tratamento por delegao


Mtodo importante a implementar no Listener void actionPerformed (ActionEvent) Mtodos importantes da classe do parmetro recebido no Listener String getActionCommand()

JButton JList

void itemStateChanged (ItemEvent)

Object getItem() int getStateChange()

void removeItemListener (ItemListener)

O resultado de getStateChange() pode ser java.awt.event.ItemEvent.SELECTED ou java.awt.event.ItemEvent.DESELECTED

Tratamento por delegao


Componente x Listener x evento
Componentes Mtodos do componente para cadastrar Listeners void addAdjustmentListener (AdjustmentListener) Mtodo importante a implementar no Listener void
adjustmentValueChanged

Mtodos importantes da classe do parmetro recebido no Listener int getValue()

JScrollbar

(AdjustmentEvent)

void removeAdjustmentListener (AdjustmentListener)


List void
addListenerSelectionListener (ListenerSelectionListener)

void valueChanged
(ListSelectionEvent)

int getFirstIndex() int getLastIndex()

Como o tratamento de evento funciona


ActionListenerDemo.java

Como o tratamento de evento funciona


txtEntrada

Objeto JTextField
listenerList

Tratamento dos eventos


public void actionPerformed ( ActionEvent e) { // aes do evento }

...

Esta referncia criada pela instruo txtEntrada.addActionListener(this);

Como o tratamento de evento funciona


MouseTracker.java

MouseDetails.java

Como o tratamento de evento funciona


KeyDemo.java

Prxima aula
Reviso Herana Polimorfismo Conceito de herana mltipla

Sugesto de leitura para fixao do contedo da aula de hoje:


PLT Introduo a Programao Orientada a Objeto Utilizando Java Rafael Santos

Introduo ao desenvolvimento de interfaces grficas (Tratamento de Eventos)


Prof.: Paulo C. Barreto pcgenio@gmail.com paulo.b@aedu.com

Faculdade Anhanguera de Santa Brbara Disciplina: Programao Orientada a Objetos II

S-ar putea să vă placă și