Logo Passei Direto
Buscar
Material
páginas com resultados encontrados.
páginas com resultados encontrados.

Prévia do material em texto

TRATAMENTO DE EVENTOS PARA INTERFACES GRÁFICA
As aplicações em geral precisam de alguns eventos para o funcionamento completo do programa. Normalmente as GUI´s do Java são baseadas em eventos, que são tarefas realizadas quando um usuário faz a interação com algum componente GUI, convertendo as ações do usuário em eventos, como por exemplo:
Quando ocorre uma ação (ActionEvent);
Clique do mouse (MouseEvent);
Apertar em uma tecla (KeyEvent);
Fechar uma janela (WindowEvent);
As tarefas de respostas realizadas em um evento são conhecidas como handler de evento e o processo total de responder a eventos é conhecido como tratamento de evento. Para cada tipo de evento precisa ser implementada uma interface de escuta.
Handler de Evento
Quando um evento acontece, é realizado o despacho (dispatching) para os ouvintes apropriados. Esse despacho é o processo em que o componente GUI chama um método de tratamento de evento em cada um de seus ouvintes, sendo registrados para o tipo de evento ocorrido.
A ocorrência de um evento faz com que o componente receba um ID único de evento. Esse ID especifica o tipo de evento. Então o componente pega esse ID para decidir qual tipo de ouvinte irá ser útil para o evento que deverá ser despachado, decidindo qual o método que vai chamar para cada objeto listener.
O evento é despachado por todas as decisões que são tratadas para o usuário através dos componentes GUI. Sendo necessário ser feito, pois precisa ser registrado um handler de evento para o tipo particular de evento que o aplicativo exige. O componente vai assegurar que o método apropriado do handler de evento é chamado quando o evento ocorrer. Abaixo ilustramos alguns exemplos de componentes GUI e manipulações de alguns eventos.
As informações de evento são armazenadas em um objeto de uma classe que estende AWT.Event.
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
HIERARQUIA DE EVENTOS REFERENTE AO PACOTE JAVA.AWT.
Existem três elementos para o funcionamento do tratamento de evento que são:
Origem do Evento: é o componente GUI com qual o usuário interage.
Objeto do Evento: contém os dados do evento invocado, sendo como uma referência à origem do evento e quaisquer informações específicas do evento que podem ser exigidas pelo ouvinte para testar o evento.
Ouvinte do Evento: é um objeto que é notificado pela origem de evento quando um evento ocorre.
INTERFACES OUVINTES DE EVENTOS DOS PACOTES JAVAX.SWING.EVENT.
Figura 2: Interfaces listener de eventos
Lembrando que as interfaces providas da classe Listener podem ter um ou mais métodos de tratamento de evento que devem ser declarados na classe que implementa a interface.
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
Os componentes Swing podem gerar vários tipos de eventos diferentes. �
Alguns exemplos: �
Usuário clica em um botão --: ActionListener � 
Usuário fecha um frame --: WindowListener � 
Usuário pressiona um botão do mouse --: MouseListener � 
Usuário move o mouse --: MouseMotionListener � 
Componentes se tornam visíveis --: ComponentListener
Classes adaptadoras
Muitas das interfaces listeners de eventos fornecem múltiplos métodos. Nem sempre é desejável definir todos os métodos em uma interface listener de eventos. Por exemplo, o programa pode precisar apenas do tratador de mouseClicked da interface MouseListener. Para muitas das interfaces listeners que contém múltiplos métodos, os pacotes java.awt.event 
e javax.swing.event fornecem classes adaptadoras de ouvintes 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 na interface. O programador 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.
As classes adaptadoras java.awt.event são as seguintes:
	Classe adaptadora de eventos
	Implementa a interface
	ComponentAdapter
	ComponentListener
	ContainerAdapter
	ContainerListener
	FocusAdapter
	FocusListener
	KeyAdapter
	KeyListener
	MouseAdapter
	MouseListener
	MouseMotionAdapter
	MouseMotionListener
	WindowAdapter
	WindowListener
Sendo evento ouvinte
Quando existe a intenção de uma ação do usuário sobre algum componente, é necessário o componente saber que há esse interesse, sendo assim é implementado a interface ActionListener e usado o método addActionListener() sendo passado como parâmetro a palavra “this”, é a referência do objeto da classe que implementa a interface ActionListener, neste caso ela mesma. Após isso é preciso saber uma maneira de chamar o componente quando algum evento ocorrer, sendo que o componente irá chamar o método da interface de escuta, ActionListener.
PARA FAZERMOS UM TRATADOR DE EVENTOS PRECISAMOS DE TRÊS AÇÕES BÁSICAS:
Especificar uma classe que implemente uma interface de ActionListener: 
public class CapturaEvento implements ActionListener {
Executar um código que registre uma instância desta classes como um listener de um ou mais componentes:
botao.addActionListener(this);
Definir o método de manipulação de eventos interface ActionListener: 
public void actionPerformed(ActionEvent evento) {
Entendendo serialização em Java
@SuppressWarnings ("unchecked") - suprime algumas mensagens de alerta
@SuppressWarnings ("serial") - suprime o warning de que sua classe é serializable e portanto deveria definir um SerialVersionUID.
Para que esse warning apareça, basta fazer um filho de qualquer classe que seja serializable (JFrame ou JDialog, por exemplo).
A serialização resume-se em salvar, gravar, capturar o estado de um objeto. Ou seja, tenho um objeto de uma classe e quero salvar seu estado: uso
serialização pois, quando quiser usá-lo com seu último estado gravado, é somente des-serializá-lo.
Mas por que usar isso?
Usar serialização permite que você crie o objeto ou uma variável
de instância de uma classe e grave em um arquivo para, futuramente, utilizar esse objeto/variável com seu estado que foi gravado.
Lembre-se: quando o construtor é executado, os valores são perdidos, objeto = null, eos tipos primitivos recebem seus valores padrões.
Com a serialização, um objeto ou uma variável de instância tem o valor gravado (em um arquivo), armazenado e futuramente posso obter esse valor através da des-serialização.
tratadores de eventos de mouse são MouseListener
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
�PAGE �
�PAGE �5�

Mais conteúdos dessa disciplina