Buscar

Tratamento de Eventos em Interfaces Gráficas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 30 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 30 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 30 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Linguagem de Programação
Fabiano Gonçalves dos Santos
Aula 8
*
Conteúdo
Apresentar os conceitos de Listener e os tratamentos de eventos
Apresentar os conceitos de Adapters que implementam as interfaces de eventos
Utilizar interfaces gráficas interagindo com objetos e classes previamente definidos com Listeners e Adapter;
*
*
*
Evento pode ser considerado como o resultado da interação do usuário com algum componente GUI: 
Mover o mouse, clicá-lo, digitar num campo de texto, selecionar um item de menu, fechar uma janela, clicar num botão, etc. são interações que enviam eventos para o programa, normalmente realizando serviços. 
Eventos
*
*
*
Eventos também podem ser gerados em resposta a modificações do ambiente. Em outras palavras, define-se eventos GUI como mensagens (chamadas a métodos) que indicam que o usuário do programa interagiu com um dos componentes GUI.
Um sistema orientado a objetos é definido como um conjunto de objetos interagindo ou trocando mensagens. Os eventos representam as ações dos atores neste processo ou alguma resposta a uma mudança de estado.
Eventos
*
*
*
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 listeners. 
Tratamento de eventos
*
*
*
Um listener é uma interface que especifica os métodos que uma aplicação deve ter para ser notificada da ocorrência de um determinado evento. 
Os componentes que geram eventos permitem que sejam adicionados ou removidos listeners em qualquer altura. 
Tratamento de eventos
*
*
*
O modelo de eventos do Java funciona da seguinte forma: 
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; 
Tratamento de eventos
*
*
*
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. 
Tratamento de eventos
*
*
*
São elementos ou componentes que não permitem conter outros elementos. 
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 aleatório. 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. 
Tratamento de eventos
*
*
*
Para adicionar listeners, a classe que representa o botão (JButton) possui um método chamado addActionListener que recebe por parâmetro um objeto que implemente a interface ActionListener. Na API vê-se que a interface ActionListener especifica um método chamado actionPerformed.
Tratamento de eventos
*
*
*
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; 
Resumindo
*
*
*
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; 
Resumindo
Utilizando a própria classe 
Utilizando uma classe local
Utilizando uma classe anônima
*
*
*
Utilizando a própria classe:
EventosGUI_1.java
*
*
Analisando o código, vê-se que é implementada a interface ActionListener. Isto é necessário porque o evento está sendo tratado na classe que representa a GUI. 
Utilizando a própria classe - Concluindo
*
*
*
Ao indicar que a classe implementa a interface, será necessário implementar o método actionPerformed. Este método irá conter o código responsável pelo tratamento do evento. Contudo, para isto tudo funcionar é necessário que a classe diga que está interessada em receber eventos do botão. A classe declara que está interessada em receber eventos, invocando o método addActionListener do botão. A partir deste momento, sempre que o botão for pressionado, este chama o método actionPerformed da aplicação gráfica. 
Utilizando a própria classe - Concluindo
*
*
*
Em resumo: 
Declara-se a implementação do listener apropriado (implements XXListener); 
Implementa-se o(s) método(s) do listener (a lista de métodos varia de evento para evento); 
Registra-se no componente (addXXlistener).
Utilizando a própria classe - Concluindo
*
*
*
Utilizando uma classe local
EventosGUI_2.java
TrataEvento.java
*
*
Em relação à abordagem anterior, utilizando uma classe local deixa-se de indicar que a interface gráfica implementa a interface ActionListener e deixa de ser necessário guardar o atributo referente à caixa de texto. Mas foi necessário criar uma classe local (não se coloca nenhum modificador) e guardar nessa classe a informação necessária para tratar o evento. Guarda-se uma referência para a caixa de texto onde escreve-se (passada no construtor) e cria-se um gerador de números aleatórios (deixou de pertencer à classe da aplicação gráfica). 
Utilizando uma classe local- Concluindo
*
*
*
A classe local tem de implementar a interface ActionListener. Assim, o método actionPerformed passou para esta classe. A classe da aplicação gráfica apenas tem de criar uma instância da classe local e registrá-la nos botões que criou. A vantagem desta abordagem é que permite separar o código da aplicação gráfica do código que trata os eventos.
Utilizando uma classe local- Concluindo
*
*
*
Utilizando uma classe anônima
EventosGUI_4.java
*
*
A utilização de classes anônimas para tratar os eventos pode parecer complexa e pouco clara. 
É a mais eficiente quando o código que trata o evento é pequeno ou quando possuímos muitos componentes. Apesar do exemplo anterior utilizar duas classes anônimas, nada impede que se utilize a mesma classe anônima para tratar os eventos de diversos componentes. A única restrição na utilização deste tipo de classes tem a ver com o fato de que todas as referências utilizadas dentro da classe têm de ser finais ou atributos da própria classe. 
Classe anônima - Concluindo
*
*
*
As classes anônimas são muito utilizadas para implementar localmente interfaces. A sintaxe típica para a construção de uma classe deste tipo é a seguinte: 
<NomeDaInterface><nomeDaInstânciaAnônima>= new <NomeDaInterface> { 
		// implementação dos métodos da interface 
	};
Classe anônima - Concluindo
*
*
*
O Swing oferece um conjunto de diálogos simples pré-definidos para uso em interações breves com o usuário: 
mensagens de erro, de alerta
 
obtenção de uma confirmação 
entrada de um único campo de texto 
Diálogos Pré-Definidos
*
*
*
Estrutura básica:
JOptionPane
*
*
*
Exibe uma mensagem e aguarda OK do usuário
MessageDialog
*
*
*
Exibe uma mensagem e obtém uma confirmação (YES/NO, OK/CANCEL) 
Conjuntosde botões de opção(optionType): 
JOptionPane.DEFAULT_OPTION 
JOptionPane.YES_NO_OPTION 
JOptionPane.YES_NO_CANCEL_OPTION 
JOptionPane.OK_CANCEL_OPTION
ConfirmDialog
*
*
*
Exibe uma mensagem e obtém um valor de entrada do usuário 
Campo texto editável
Combo box 
InputDialog
*
Linguagem de Programação
Fabiano Gonçalves dos Santos
Atividade 8
*
*
Programando …
Escreva um programa capaz de converter o valor em Reais fornecido numa caixa de entrada (TextField) em outro valor monetário conforme a seleção de uma moeda (no mínimo 3 moedas diferentes) numa caixa de seleção (Combo) 
 indicando o resultado em um 
 rótulo (Label). 
 Se necessário adicione botões. 
*
*
Veja o programa Atividade8.java!
	
AULA 1
*
AULA 1
	
AULA 1
*
AULA 1
	
AULA 1
*
AULA 1
	
AULA 1
*
AULA 1
	
AULA 1
*
AULA 1
	
AULA 1
*
AULA 1
	
AULA 1
*
AULA 1
	
AULA 1
*
AULA 1
	
AULA 1
*
AULA 1
	
AULA 1
*
AULA 1
	
AULA 1
*
AULA 1
	
AULA 1
*
AULA 1
	
AULA 1
*
AULA 1

Outros materiais