Baixe o app para aproveitar ainda mais
Prévia do material em texto
25/03/2019 1 PROGRAMAÇÃO II Aula 06 – Tratamento de eventos para interfaces gráficas. Prof. Ronaldo Candido posinf_ronaldo@yahoo.com.br 2019.1 AULA 06 PROGRAMAÇÃO II Prof. Ronaldo Candido Conteúdo Programático 1. Modelos para tratamento de eventos; 2. Forma de construção de tratamento de eventos; 3. Tratamento de conjunto de eventos comuns ; 4. NetBeans : Exportando e importando projetos ; 5. Exemplos e exercícios. 25/03/2019 2 AULA 06 PROGRAMAÇÃO II Prof. Ronaldo Candido Tratamento de eventos para interfaces gráficas • Eventos são gerados quando o usuário interage com a interface gráfica. Exemplos de eventos : Clicar em um botão ; Selecionar um item de um menu ; Arrastar um objeto pela tela ; Rolar um texto usando as barras de rolagem ; Digitar uma informação em uma caixa de texto ; Passar o mouse sobre um objeto ; Redimensionar um objeto, etc... AULA 06 PROGRAMAÇÃO II Prof. Ronaldo Candido Tratamento de Eventos - Listeners • No Java os eventos são tratados por objetos chamados listeners (ouvintes) ; • Cada componente registra um objeto que irá receber os eventos (objeto listener), o que representa uma forma de delegar tratamento de evento ; • Os eventos são objetos que são reportados somente aos listeners registrados ; • Cada evento tem uma interface Listener associada ; • O objeto listener usará a informação no objeto evento para determinar a reação ao evento. Tela (GUI) Controles: botões, campos, etc. Listener Handler (tratador) Evento 1 Evento 2 Evento n 25/03/2019 3 AULA 06 PROGRAMAÇÃO II Prof. Ronaldo Candido Hierarquia de classes • Na linguagem Java, as informações sobre qualquer tipo de evento que ocorre são guardadas em um objeto de uma classe que estende a classe AWTEvent ; • A partir do evento gerado, trata-se a Listener, como, por exemplo, quando o usuário clica em um botão, será a ActionListener. java.lang.Object java.util.EventListener ActionListener AdjustmentListener ComponentListener ContainerListener ItemListener KeyListener WindowListener TextListener FocusListener Nome da Classe Nome da Interface Interfaces do Pacote AWT.event MouseMotionListener MouseListener AULA 06 PROGRAMAÇÃO II Prof. Ronaldo Candido Modelo para tratamento de eventos 1. Criar uma classe que vai implementar a interface associada ao evento a ser tratado. Implementar uma interface significa codificar todos os métodos que são especificados por ela. Esta interface tem o formato <componente>Listener, por exemplo, MouseListener, ActionListener, etc... ; 2. Criar um objeto desta classe que foi definida no item anterior ; 3. Registrar o objeto criado como o tratador de eventos (handler) de um determinado objeto usando o método apropriado. Este método tem o formato add<Componente>Listener ; 4. Codificar o(s) método(s) da interface implementada na classe correspondente. 25/03/2019 4 AULA 06 PROGRAMAÇÃO II Prof. Ronaldo Candido Conhecendo as Listeners • Interfaces Listeners - pacote : java.awt.event : ActionListener - Eventos que representam ação, como por exemplo, clique no botão da classe JButton. ItemListener - Evento no JComboBox e JList. KeyListener - Eventos do teclado. MouseListener - Eventos de clique com o mouse. MouseMotionListener - Eventos de movimentação do mouse. WindowListener - Eventos direcionados para a janela de uma aplicação (fechar, minimizar, maximizar, etc...). Exemplo ao pressionar um JButton : Método actionPerformed() é chamado na escuta registrada para o objeto. AULA 06 PROGRAMAÇÃO II Prof. Ronaldo Candido Usando a interface ActionListener • Para tratar os eventos relacionados aos botões, tais como JButton, JRadioButton, JCheckBox ou mesmo itens de menu, deve-se criar classes para manipulação a partir da interface ActionListener. Esta interface contém apenas um método, o actionPerformed (ActionEvent e). Ex. : 25/03/2019 5 AULA 06 PROGRAMAÇÃO II Prof. Ronaldo Candido Exemplo01 – Tratamento de evento //MeuFrame.java public class MeuFrame extends JFrame { private JButton btnClique; public MeuFrame() { super("Testando eventos"); } public void init() { this.setSize(300, 150); this.setLocationRelativeTo(null); this.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE); FlowLayout layout = new FlowLayout(); this.setLayout(layout); btnClique = new JButton("Clique-me!"); add(btnClique); //criar novo tratador e registra o botão EventoFrame handler = new EventoFrame(); btnClique.addActionListener(handler); } // fim do init() } // fim da classe Acrescentar ao final do método init() após criar a nova classe EventoFrame no pacote controle !!! AULA 06 PROGRAMAÇÃO II Prof. Ronaldo Candido //EventoFrame.java //classe da interface do ouvinte do evento public class EventoFrame implements ActionListener { //método sobrecarregado para o evento @Override public void actionPerformed (ActionEvent e) { //exibir mensagem de quem gerou o evento JOptionPane.showMessageDialog(null, "Você clicou em :" + e.getActionCommand()); } // fim do método } //fim da classe ================================================================================================================================== //classe principal public class ProgrII_Aula06_Exemplo01 { public static void main(String[] args) { MeuFrame mf = new MeuFrame(); mf.init(); mf.setVisible(true); } //fim do main() } //fim da classe 25/03/2019 6 AULA 06 PROGRAMAÇÃO II Prof. Ronaldo Candido Usando classes anônimas • No exemplo anterior separamos em classes cada etapa do funcionamento da aplicação, cujos pacotes foram : visao MeuFrame - btnClique + init() controle EventoFrame + actionPerformed() exemplo01 Exemplo01 + main() • Em determinados códigos pode ocorrer uma classe ser interna a outra, gerando uma classe anônima : btnClique.addActionListener (new ActionListener() { public void actionPerformed(ActionEvent evt) { MeuFrame cadastro = new MeuFrame(); cadastro.setVisible(true); } //fim do actionPerformed() }); // fim do addActionListener() AULA 06 PROGRAMAÇÃO II Prof. Ronaldo Candido NetBeans : Exportando e importando projetos • Para exportar um projeto para um arquivo .ZIP : 1. Com o projeto aberto, clicar no menu Arquivo / Exportar para arquivo / Para .ZIP ; 2. Em ‘Construir ZIP’, indicar o local e nome do arquivo para compactar (Ex.: projeto01.zip) ; 3. Clicar em Exportar. • Para importar um projeto de um arquivo .ZIP : 1. Clicar no menu Arquivo / Importar projeto / De .ZIP ; 2. Em ‘Arquivo ZIP’, indicar o local e nome do arquivo do ZIP; 3. Clicar em Importar. 25/03/2019 7 AULA 06 PROGRAMAÇÃO II Prof. Ronaldo Candido Exercício prático 1. Refaça o Exercício02 da Aula02, usando o tratamento de evento no botão Converter. Ao ser lida a temperatura em Celsius, aplicar a fórmula abaixo para exibir na caixa correspondente em Fahrenheit : Fahrenheit = Celsius / 5 * 9 + 32 AULA 06 PROGRAMAÇÃO II Prof. Ronaldo Candido Exercício prático 2. Refaça o Exercício01 da Aula04, usando o tratamento de evento no botão OK. Ao serem lidas as informações digitadas, exibir o total poupado usando juros compostos : Total = Depósito x (1 + juros)anos x 12 25/03/2019 8 AULA 06 PROGRAMAÇÃO II Prof. Ronaldo Candido 1. DEITEL, H. M.; DEITEL, P. J. Java: Como programar (Biblioteca virtual). 10. ed. São Paulo: Pearson, 2017. 2. JUNIOR, P. J. Java Guia do Programador. 3. ed. São Paulo: Novatec, 2015. 3. SANTOS, F. G. Programação orientada a objetos. 1. ed. Rio de Janeiro: SESES, 2017. Capítulo 3. 4. API dos eventos do AWT: (Acesso em 20/03/19) https://docs.oracle.com/javase/8/docs/api/java/awt/event/package-summary.html 5. Artigo : Trabalhando com eventos: (Acesso em 20/03/19) https://www.devmedia.com.br/trabalhando-com-eventos-na-gui-do-java/25898 Bibliografia Básica Fim da apresentação Prof. Ronaldo Candido posinf_ronaldo@yahoo.com.br Dúvidas, sugestões ou análises ??? PROGRAMAÇÃO II
Compartilhar