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

Prévia do material em texto

- -1
PROGRAMAÇÃO ORIENTADA A OBJETOS
TRATAMENTO DE EVENTOS EM 
INTERFACES GRÁFICAS
- -2
Olá!
Nesta aula, você irá:
1 - Compreender os modelos de tratamentos de eventos.
2 - Utilizar os tratamentos de eventos prontos.
3 - Manipular com os tratamentos de eventos de janelas.
4 - Compreender e manipular o tratamento de eventos de Botões e Menus.
Tratamento de eventos em Java
Quase todos os componentes propagam eventos. Estes eventos devem ser tratados em algum ponto do código da
aplicação. Os eventos nunca são tratados no próprio componente (dado que não se tem acesso ao código do
componente). Para ligar o código do tratamento de eventos ao componente existem, no Java, um conjunto de
interfaces chamadas . Um é uma interface que especifica os métodos que uma aplicação deve terlisteners listener 
para ser notificada da ocorrência de um determinado evento. Os componentes que geram eventos permitem que
sejam adicionados ou removidos em qualquer altura.listeners 
O modelo de eventos do Java funciona da seguinte forma:
1. O componente que produz eventos possui métodos especiais do tipo addXXListener(XXListener) que permite
adicionar ou remover listeners. XX representa o nome do evento. O método addXXListener recebe por parâmetro
o objeto que implementa a interface XXListener;
2. A implementação do método addXXListener no componente apenas adiciona o objeto passado por parâmetro a
uma lista interna. Sempre que ocorrer um evento (ex. botão pressionado), o componente percorre a lista e invoca,
para cada elemento, o método definido na interface XXListener.
- -3
No exemplo seguinte é construída uma GUI simples com um botão e uma caixa de texto. Sempre que o botão é
pressionado a aplicação deve escrever na caixa de texto um número inteiro incrementado do valor anterior. Para
processar os eventos é necessário analisar os eventos que o botão produz. É preciso saber que sempre que um
botão é pressionado é criado um evento do tipo .ActionEvent
Para adicionar listeners, a classe que representa o botão ( ) possui um método chamadoJButton
 que recebe por parâmetro um objeto que implemente a interface . Na API vê-addActionListener ActionListener
se que a interface especifica um método chamado .ActionListener actionPerformed
Resumindo
ActionEvent – evento gerado pelo botão quando pressionado. Sempre que o botão for pressionado, este irá
percorrer a sua lista interna de listeners, chamando para cada um, o método actionPerformed;
ActionListener– interface que especifica os objetos que tratam eventos do tipo ActionEvent; Existem várias
soluções possíveis para tratar o evento:
• Recorrendo à própria classe (GUI) – a aplicação gráfica tem de implementar os listeners necessários;
• Recorrendo a classes locais – é criada uma classe local que implementa os listeners necessários;
• Recorrendo a classes internas – é criada uma classe dentro da GUI. A classe interna implementa os 
listeners necessários;
• Recorrendo a classes anônimas – criam-se classes anônimas que implementem os listeners dos eventos 
a tratar. As classes anônimas são classes internas especiais;
Hierarquia dos eventos
•
•
•
•
- -4
Os Eventos Prontos
Aprendendo na prática
Vamos implementar um programa simples para incrementar um valor numérico. Quando apertamos o botão
Incrementar, o valor incrementa e quando apertamos o botão Zerar, o valor volta para zero.
Para isso, precisamos de um JFrame, dentro dele teremos um JLabel, um JTextField e dois JButton.
A colocação ou disposição dos componentes, utilizar um gerenciador de leiaute a sua escolha, dentre os vistos na
aula 2. Caso queira, utilize a estrutura de design do NetBeans.
- -5
A Interface ActionListener
Abaixo, o código pronto:
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
trataEventoBt1ActionPerformed(evt); //método de tratamento
}
});
Esta interface disponibiliza o tratamento através do método ActionPerformed.
Este tratamento é feito da seguinte forma:
• Adicionamos o ActionListener no objeto em questão;
• Criamos o objeto que irá tratar este evento, instanciando um objeto ActionListener para implementar o 
método de tratamento;
• Implementamos o método actionPerformed, que é o método de tratamento.
No botão, adicionamos um listener (“escutador” de eventos), que é um objeto criado neste momento. Este objeto
possui o seu tratamento, que é o actionPerformed para o evento em questão. Este método é chamado toda vez
que o ActionListener detecta o evento que o botão foi pressionado. Para manter uma programação mais elegante,
criamos um método de tratamento que será chamada dentro do actionPerformed(). Este método pode ser
escrito em qualquer parte da sua classe e reaproveitado quantas vezes você quizer.
Com isso, tratamos o evento Action. Os outro eventos funcionam analogicamente.
Para saber mais sobre esse assunto, clique aqui: http://estaciodocente.webaula.com.br/cursos/gon282/docs
/14POO_aula04_doc01.pdf
A Interface WindowListener
Esta interface disponibiliza 12 métodos de tratamento para os diferentes comportamentos possíveis para a
janela. Os principais são:
•
•
•
http://estaciodocente.webaula.com.br/cursos/gon282/docs/14POO_aula04_doc01.pdf
http://estaciodocente.webaula.com.br/cursos/gon282/docs/14POO_aula04_doc01.pdf
- -6
Abaixo, segue o código para o tratamento destes principais eventos no nosso exemplo anterior. Nesta alteração,
foi colocado um campo Jlabel com o nome de jLblMsg onde colocamos o estado da janela.
This.addWindowListener(new
Java.awt.event.WindowListener() {
public void windowOpened(WindowEvent e)
{
trataAberturaJanela();
}
public void windowClosing(WindowEvent e)
{
trataConfirmacaoFechamento();
}
public void windowIconified(WindowEvent
e) {
JOptionPane.showMessageDialog(null, “Vamos Iconizar a Janela”);
}
public void
windowDeiconified.showMessageDialog(null, “Voltanto ao tamanho normal”);
}
public void windowActivated(WindowEvent
e) {
setMsg(“Janela Ativa”);
- -7
}
public void
windowDeactivated(WindowEvent e) {
setMsg(“Janela Atia):
}
});
Private void trataConfirmaçãoFechamento() {
JOptionPane.showMessageDialog(null, “Estamos saindo);
System.exis(0);
}
Private avoid trataAberturaJanela() {
JOptionPane.showMessageDialog(null, “Estamos Iniciando o programa”);
}
public void setMsg(String msg){
jLblMsg.setText(msg);
}
A Interface MouseListener
Esta interface disponibiliza 14 métodos de tratamento para os diferentes comportamentos possíveis para as
funções do mouse. Os principais são:
- -8
Acrescentando o tratamento de evento para o mouse para o componente Botão Zerar no programa, teremos:
jButton2.addMouseListener(new
java.awt.event.MouseListener() {
public void mouseCticked(MouseEvent e) {
setMsg("Zerando variaver);
}
public void mousePressed(MouseEvent e) {
//
}
public void mouseReleased(MouseEvent e) {
//
}
public void mouseEntered(MouseEvent e) {
setMsg("Entrando no botão Zerar");
}
public void mouseExited(MouseEvent e) {
setMsg("Saindo do botão Zerar");
}
});
- -9
A Interface MouseMotionListener
Esta interface disponibiliza 2 métodos de tratamento para os diferentes comportamentos possíveis para a janela.
Adicionando o tratamento de evento no componente jTextField1 no exemplo da aula:
jTextField1.addMouseMotionListener(new java.awt.event.MouseMotionListener() {
public void mouseDragged(MouseEvent e) {
setMsg("Tentando Mover o componente");
}
public void mouseMoved(MouseEvent e) {
setMsg("Movendo o mouse em cima do texto");
}
});
Saiba mais
Para esta aula sugiro as seguintes tarefas:
• Leitura do Capítulo 11 (11.5 até 11.13) do livro Java como programar, 6ª 
Edição, de H. Deitel e P. Deitel, Editora Pearson Education, 2005.
• Resolução dos exercícios de 11.15 até 11.18 do capítulo 11 do livro Java Como 
Programar.
•
•
- -10
O que vem na próxima aula
•Tratamento de Eventos de manipulação de textos.
CONCLUSÃO
Nesta aula, você:• Compreendeu os modelos de tratamentos de eventos.
• Utilizou os tratamentos de eventos prontos.
• Manipulou com os tratamentos de eventos de janelas.
• Compreendeu e manipular o tratamento de eventos de Botões e Menus.
•
•
•
•
	Olá!
	
	O que vem na próxima aula
	CONCLUSÃO

Mais conteúdos dessa disciplina