Baixe o app para aproveitar ainda mais
Prévia do material em texto
Aula 8: Listeners e Adapters Eventos Evento é um acontecimento relevante no meio externo ao sistema relevante. 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 também podem ser gerados em resposta a modificações do ambiente. Em outras palavras, definem-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 nesse processo ou alguma resposta a uma mudança de estado. Tratamento de Eventos Quase todos os componentes propagam eventos. Esses 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 componentes existem, no Java, um conjunto de interfaces chamadas listeners. 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. 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. 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 (exp.: botão pressionado), o componente percorre a lista e invoca, para cada elemento, o método definido na interface XXListener. 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. 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. Exemplo de MessageDialog: import java.awt.Component; import javax.swing.*; package exemplos; public class Janela { private static Component janela; public static void main(String[] args){ JOptionPane.showMessageDialog( janela, "Cuidado com as Provas!","Linguagem de Programação",JOptionPane.WARNING_MESSAGE); } } ConfirmDialog Exibe uma mensagem e obtém uma confirmação (YES/NO, OK/CANCEL) Conjuntos de botões de opção(optionType): - JOptionPane.DEFAULT_OPTION - JOptionPane.YES_NO_OPTION - JOptionPane.YES_NO_CANCEL_OPTION - JOptionPane.OK_CANCEL_OPTION Exemplo de ConfirmDialog: import java.awt.Component; import javax.swing.*; package exemplos; public class Janela { private static Component janela; public static void main(String[] args){ int resp = JOptionPane.showConfirmDialog(janela, "Você já estudou para as provas?", "Escolha uma opção",JOptionPane.OK_CANCEL_OPTION); } } Exemplo de InputDialog: import java.awt.Component; import javax.swing.*; package exemplos; public class Janela { private static Component janela; public static void main(String[] args){ String nome = JOptionPane.showInputDialog(janela, "Qual é o seu número de Matrícula", "Linguagem de Programação",JOptionPane.QUESTION_MESSAGE); } }
Compartilhar