Introdução Interfaces (revisão) Delegação de eventos Tratamento de eventos Classes Adaptadoras Capturando Eventos nos Componentes Swing

Documentos relacionados
INF1636 PROGRAMAÇÃO ORIENTADA A OBJETOS

INF1337 LINGUAGEM DE PROGRAMAÇÃO ORIENTADA A OBJETOS

Aula 2 Even e to t s d o M ouse

MANIPULAÇÃO DE EVENTOS

PROGRAMAÇÃO ORIENTADA A OBJETOS. Aula 4- Tratamento de Eventos em Interfaces Gráficas

Manipulando Eventos em Java

Programação Orientada a Objetos com Java. Prof. Júlio Machado

Tratamento de Eventos em Programas com GUI - Graphical User Interface. Jorge H. C. Fernandes UFRN Junho de 2001

Objetivos do Capítulo

Programação Java. Construção de Interface gráfica. Processo Básico: OO + Eventos. Exemplo

Aula 2 Eventos do Mouse by Pearson Education do Brasil

PROGRAMAÇÃO ORIENTADA A OBJETOS. Aula 5- Tratamento de Eventos de Manipulação de textos

Aplicação Linguagem de Programação Orientada a Objeto

Arquivos. Prof. Leonardo Barreto Campos 1

Componentes Parte 02

Manipulação de Eventos

Aula 12 POO 1 Interface Gráfica no Java. Profa. Elaine Faria UFU

TRATAMENTO DE EVENTOS EM JAVA USANDO SWING. George Gomes Cabral

Tratamento de Eventos

Programação Orientada a Objectos - P. Prata, P. Fazendeiro

Programação Orientada a Objectos - P. Prata, P. Fazendeiro

Processo Básico: OO + Eventos. Java First-Tier: Aplicações. Construção de Interface gráfica. Exemplo. Exemplo. Exemplo. Hierarquia de Composição

Introdução à Tecnologia Java 02/2012. Java Aula 02 15/08/2012. Celso Olivete Júnior.

Criando interfaces com o usuário. Continuação

Java Avançado com acesso JDBC a Banco de Dados, Arquivos, Swing e Eventos

Introdução à Programação Gráfica em Java

Componentes GUI A aparência e maneira como um usuário pode interagir com componentes AWT diferem de acordo com a plataforma. Componentes Swing permite

Programação Gráfica em Java Alguns Componentes javax.swing

Universidade Federal de Uberlândia Faculdade de Computação GGI030 Programação Orientada a Objetos 2o. Semestre de 2017 Prof.

Elaborando Interfaces. Prof. André Aparecido da Silva Disponível em: Aulas 16, 17, e 18

Interfaces Gráficas (GUIs) em Java usando Swing Parte I - O básico

PROGRAMAÇÃO ORIENTADA A OBJETOS. Aula de Revisão para AV1

AULA 10 - CCT0024 Linguagem de Programação Objetivos da aula. Janelas para leitura e exibição de textos

PROGRAMAÇÃO ORIENTADA A OBJETOS. Aula de Revisão para AV1

Java AWT Objectos e Eventos. Label Button TextField Checkbox RadioButton Combobox

Elaborando as Interfaces Aulas 31, 32 e 33

Arquitetura de Tratamento de Eventos em Programas com GUI - Graphical User Interface

Programação III. Interface Gráfica - Swing. Interface Gráfica Swing Jocélio Passos joceliodpassos@bol.com.br. Interface Gráfica - Swing

Swing. Page 1. Swing. Prof. Anderson Augustinho Uniandrade

. Uma instância da classe JTextField gera uma instância da classe ActionEvent quando o objecto está activo e o utilizador pressiona a tecla ENTER.

AWT Versus Swing. Java Deployment Course: Aula 5. por Jorge H C Fernandes (jhcf@di.ufpe.br) CESAR-DI-UFPE Recife, 1999

JavaBeans. Java Deployment Course: Aula 8. por Jorge H C Fernandes CESAR-DI-UFPE Recife, 1999

Adding User Interaction

Aplicações Gráficas com AWT

Java First-Tier: Aplicações. Abstract Window Toolkit (AWT) Construção de Interfaces com Swing (I) Swing: Características

TIC - Programação Visual. Componentes. Prof. Edwar Saliba Júnior Setembro de Unidade 14 Componentes 1

Aplicações de Linguagem de Programação Orientada a Objeto

JAVA. Marcio de Carvalho Victorino. Interface Gráfica em Java (GUI)

Orientação a Objetos

Prof. Rogério Albuquerque de Almeida. Programação Orientada a Objetos II Java Nona aula

Módulo 7. Interface Gráfica com o Usuário GUI - Introdução. Programação Orientada a Objetos I Java (Rone Ilídio)

Elaborando Interfaces. Prof. André Aparecido da Silva Disponível em: Aulas 16, 17, e 18

Elaborando as Interfaces dos trabalhos das aulas 28, 29 e 30.

Adicionados a componentes que possuem o método setjmenubar. tem itens de menu e são inseridos na MenuBar podem funcionar como submenu

Técnicas de Programação II

Componentes Parte 01

JCheckbox JRadioButton JComboBox JList JMenu... Alguns componentes já vistos em aula JButton JLabel JTextField

MÓDULO 4 SWING Parte 3

Roteiro. Introdução. Uma Introdução à Programação Orientada a Objetos e JAVA usando NetBeans. Objetos. Princípios da Orientação a Objetos

Exercício 1: Criar um programa que utiliza que desenha uma interface gráfica tal como descrito na Figura 1.1.

Construção de Interfaces Gráficas

JFrame. JLabel : Utilizado como rótulo para exibição de texto e ícones. Interface Gráfica de JAVA - Graphical User Interface (GUI)

Swing Módulo II. Tiago Alves de Oliveira. Tiago Alves de Oliveira 1

PROGRAMAÇÃO ORIENTADA A OBJETOS. Aula 1- Interfaces Gráficas com Swing

INF1636 PROGRAMAÇÃO ORIENTADA A OBJETOS

A classe JTextField

COM220 Aula 17: Interface Gráfica Containers Swing

Fundamentos de GUIs. João Carlos Pinheiro. Última Atualização Junho / 2004 Versão: 3.0

Prof. Fernando V. Paulovich 25 de julho de SCC Programação Orientada a Objetos

JFC/Swing. LPGII - Java Interface Gráfica JFC/Swing. Introdução JFC / Swing. Introdução JFC / Swing

Componente JOptionPane Layout Null Tratamento de Eventos. Action Listener

Elaborando as Interfaces Aulas 43, 44 e 45

Programação Orientada a Objetos

Cada categoria de evento exige uma interface apropriada que deve ser implementada pela classe tratadora do evento.

Aula 15 Interface Gáfica. Disciplina: Programação Estruturada e Orientada a Objetos Prof. Bruno Gomes

Interface Gráfica Swing. Leonardo Gresta Paulino Murta

Caso não exista nenhum listener registado no objecto que gera o evento, este não terá qualquer efeito.

Encerrando Introdução a Objetos e Classes Redefinição de Métodos (1)

Abstract Window Toolkit (AWT) Peer based

Interfaces Gráficas POO. Prof. Márcio Delamaro

Tiago Alves de Oliveira. Tiago Alves de Oliveira

Interface Gráfica. Disciplina: Desenvolvimento de Sistemas. Professor: Thiago Silva Prates

Desenvolvimento de Aplicações Desktop

Interfaces Gráficas com Swing. Professor Leonardo Larback

Interface Gráfica. LPG II Java Interface Gráfica AWT. Introdução. AWT - Abstract Window Toolkit

INF1636 PROGRAMAÇÃO ORIENTADA A OBJETOS

INTERFACE COM O USUÁRIO (em Java) Programação Orientada a Objetos

Interface Gráfica 2. E/S pode ser feita por interface gráfica Biblioteca Swing. javax.swing.*

Linguagem Java - Prof. Luciana Porcher Nedel 1. Um container genérico e visual. Ela trabalha em cooperação com o controle de layouts.

Programação Gráfica em Java.

PROGRAMAÇÃO ORIENTADA A OBJETOS -INTERFACES GRÁFICAS. Prof. Angelo Augusto Frozza, M.Sc. frozza@ifc-camboriu.edu.br

Programação Java. Construção de Interfaces com Swing (I)

Interfaces Event-Driven Técnica de Rubberband

Interfaces Gráficas (GUIs) em Java usando Swing

Orientação a Objetos

Curso Java Starter. 1

UNIVERSIDADE FEDERAL DO PARANÁ. CURSO: Ciência da Computação DATA: / / 2013 PERÍODO: 4 o.

Java Standard Edition (JSE)

Lista de Exercícios da disciplina Aplicações de Linguagem de Programação Orientada a objetos

Transcrição:

Tratamento de Eventos Profa. Isabel Harb Manssour e Márcia Cristina Moraes (Material adaptado das aulas dos Profs: Luciana Nedel, Bernardo Copstein e Júlio P. Machado) Introdução Interfaces (revisão) Delegação de eventos Tratamento de eventos Classes Adaptadoras Capturando Eventos nos Componentes Swing Introdução Eventos são a forma utilizada por Java para adicionar interatividade em interfaces gráficas. Cada vez que o usuário pressionar um botão, digitar um caractere ou movimentar o mouse, por exemplo, ocorre um evento. 1

Introdução Neste modelo de programação, uma vez criados os componentes da interface (ex: janela), o sistema operacional se encarrega de monitorar as ações do usuário. Não existe a necessidade de prever, na aplicação, um laço aguardando uma entrada via mouse ou teclado. Essa responsabilidade passa a ser do sistema operacional. Introdução Programas baseados em janelas X Programas baseados na console: Programa com saída para a console: o usuário dispara a execução e o próprio código determina a seqüência dos eventos, onde geralmente tudo é pré-determinado. Aplicação baseada em janelas (ou uma applet): a operação do programa é conduzida pela GUI; a seleção de botões ou ícones usando o mouse ou o teclado causa ações particulares. 2

Introdução Programação dirigida por eventos: teclado, mouse Sistema Operacional Biblioteca de classes Java Eventos método método método método Tratamento de Eventos Profa. Isabel Harb Manssour (Material adaptado das aulas dos Profs: Luciana Nedel, Bernardo Copstein e Júlio P. Machado) Introdução Interfaces (revisão) Delegação de eventos Tratamento de eventos Classes Adaptadoras Capturando Eventos nos Componentes Swing 3

Interfaces (revisão) Uma interface é, essencialmente, uma coleção de constantes e métodos abstratos Para fazer uso de uma interface Implementa-se a mesma em uma classe, isto é, declara-se que a classe implementa a interface e escreve-se o código para cada um dos métodos declarados na interface Interfaces (revisão) Métodos em uma interface são sempre públicos e abstratos public abstract Constantes em uma interface são sempre públicas, estáticas e final public static final 4

Interfaces (revisão) Em suma, uma interface lista um conjunto de métodos que outras classes podem implementar Uma classe que implementa uma interface deve implementar TODOS os métodos listados Interface não é uma classe abstrata!! Não confundir com interface gráfica, ou interface de usuário! Interfaces (revisão) Exemplo public interface Dirigível { int MAXTURN = 45; //é public static final por default //é public abstract por default void viraesquerda(int graus); //é public abstract por default void viradireita(int graus); public class Carro implements Dirigível { //Carro deve obrigatoriamente implementar os //métodos viraesquerda e viradireita public void viradireita(int graus){... public void viraesquerda(int graus){... 5

Tratamento de Eventos Profa. Isabel Harb Manssour (Material adaptado das aulas dos Profs: Luciana Nedel, Bernardo Copstein e Júlio P. Machado) Introdução Interfaces (revisão) Delegação de eventos Tratamento de eventos Classes Adaptadoras Capturando Eventos nos Componentes Swing Delegação de Eventos Sempre que o usuário utiliza o mouse, o teclado ou outro dispositivo de entrada qualquer, o sistema operacional se encarrega de converter essas ações em eventos. Para cada evento que o sistema operacional é capaz de gerar, a aplicação deve prever um tratamento correspondente ( o que deve acontecer em resposta ). Em Java a ação resposta padrão para qualquer evento é não fazer nada. 6

Delegação de Eventos Para se ter uma ação em resposta, é necessário definir qual ou quais os componentes que serão encarregados de monitorar determinado evento, reagindo ao mesmo quando este ocorrer. Dizemos que um componente capaz de perceber um evento é um componente capaz de escutá-lo. Em Java, dizemos que para um componente ser capaz de perceber um evento (e tratá-lo) é necessário associar um listener (algo como um ouvinte ) ao componente. Delegação de Eventos Existem 4 componentes envolvidos no processo de tratamento de eventos: Origem do evento: é um componente onde o evento é gerado. Ex.: um evento de clique do mouse pode ser originado de um botão Evento: é um objeto que representa o evento gerado. Listener ou Receptor de evento: é um objeto responsável por ouvir ou captar a ocorrência do evento. Handler: é um método do listener responsável por executar as ações decorrentes do evento. 7

Delegação de Eventos OK Origem do Evento Notificação do Evento Listener Handler Delegação de Eventos Como isso acontece? Primeiro O listener tem que se registrar no objeto origem do evento, informando que tipo de evento ele está interessado em receber. Quando um evento ocorre O listener é notificado que o evento ocorreu O objeto origem notifica o listener através da execução de um método específico, o qual recebe como parâmetro o objeto evento. Quando o listener recebe a notificação Executa o método handler apropriado 8

Tratamento de Eventos Profa. Isabel Harb Manssour (Material adaptado das aulas dos Profs: Luciana Nedel, Bernardo Copstein e Júlio P. Machado) Introdução Interfaces (revisão) Delegação de eventos Tratamento de eventos Classes Adaptadoras Capturando Eventos nos Componentes Swing Tratamento de Eventos Vimos que o objeto origem de um evento notifica o listener através da execução de um método específico. Cada tipo de evento possui métodos específicos para o seu tratamento. Para saber que métodos são esses e como a classe listener deve implementá-los utilizamos o conceito de interface. 9

Tratamento de Eventos Como implementar um listener? Um listener deve implementar um interface que define os métodos que serão chamados quando os eventos ocorrerem. Ex.: O evento que ocorre quando um botão é clicado é o evento (objeto) ActionEvent. Todos os listeners que estão registrados para um botão e esperam receber a notificação de um clique do botão devem implementar o método actionperformed(), que será chamado pelo botão quando for clicado. Este método está definido na interface ActionListener, logo o listener deverá implementar esta interface. Tratamento de Eventos Exemplo: usuário clica em um botão de uma interface gráfica. Origem do evento: botão (evento gerado a partir do clique do mouse é associado com o objeto JButton) Notificação do evento: criação de uma instância de ActionEvent Objeto que representa e identifica este evento Contém informações sobre o evento e sua fonte Objeto ActionEvent será passado para um objeto listener ( destino de um evento) previamente registrado Pode escutar eventos de um objeto particular (um botão, por exemplo) ou de um grupo de diferentes objetos (itens de um menu) 10

Tratamento de Eventos Exemplo public interface ActionListener { void actionperformed( ActionEvent e); public class MeuListener implements ActionListener { public void actionperfomed(actionevent e) { //Aqui vem o código que é executado //quando o botão for pressionado. Tratamento de Eventos Resumindo: É possível fazer objetos de qualquer classe escutar objetos, simplesmente fazendo a classe em questão implementar uma interface listener Existe uma variedade de interfaces listener (java.awt.event.* e javax.swing.event.*): ActionListener, WindowListener, MouseListener, MouseMotionListener, KeyListener, ListSelectionListener, 11

Tratamento de Eventos (java.awt.event) ActionListener - eventos de ação, que são gerados por um usuário agindo sobre um componente, como um clique em um botão. FocusListener - eventos de foco de teclado, que são gerados quando um componente, como um campo de texto, ganha ou perde o foco. ItemListener - eventos de item, que são gerados quando um item, como uma caixa de seleção, foi alterado. KeyListener - eventos de teclado, que ocorrem quando uma tecla é pressionada. MouseListener - eventos de mouse, que são gerados por cliques do mouse, um mouse entrando ou deixando uma área de um componente. MouseMotionListener - eventos de movimento de mouse, usados para controlar a movimentação do mouse sobre um componente. WindowListener - eventos de janela, que são gerados por uma janela ao ser maximizada, minimizada, movida ou fechada. Tratamento de Eventos WindowListener: windowopened(windowevent e) - Chamado a primeira vez que a janela é aberta. windowclosing(windowevent e) - Chamado quando o ícone de fecha janela é selecionado. windowclosed(windowevent e) - Chamado quando do fechamento de uma janela. windowactivated(windowevent e) - Chamado quando uma janela é ativada (clicando sobre a mesma, por exemplo). windowdeactivated(windowevent e) - Chamado quando uma janela é desativada (clicando sobre uma outra janela, por exemplo). windowiconified(windowevent e) - Chamado quando uma janela é minimizada. windowdeiconified(windowevent e) - Chamado quando uma janela é restaurada a partir de um ícone. 12

Tratamento de Eventos ActionListener: actionperformed - Chamado quando uma ação ocorre MouseListener: 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 Tratamento de Eventos MouseMotionListener: mousemoved(mouseevent e) - Chamado quando o mouse se movimenta com um componente (drag) mousedragged(mouseevent e) - Chamado quando o mouse se movimenta com um componente (drag) enquanto o botão do mouse está pressionado KeyListener: keytyped(keyevent e) - Chamado quando uma tecla do teclado é pressionada e solta keypressed(keyevent e) - Chamado quando uma tecla do teclado é pressionada keyreleased(keyevent e) - Chamado quando uma tecla do teclado é solta 13

Tratamento de Eventos Como registrar um listener? Os listeners devem ser registrados com o objeto que gera o evento. Cada tipo de evento tem um método correspondente para adicionar um listener. Exemplo: para ActionEvent, o método é addactionlistener() JButton zap = new JButton ( Zap ); MeuListener objlistener = new MeuListener(); zap.addactionlistener(objlistener); Tratamento de Eventos Exemplo: import javax.swing.*; import java.awt.event.*; //Para utilizar eventos //Esta classe é um listener de eventos public class TestaEventos extends JFrame implements { private JButton but; private JLabel texto; private JPanel painel; private int cont; implements ActionListener 14

Tratamento de Eventos Exemplo: // Construtor public TestaEventos() { //Cria um frame com os componentes super("testaeventos"); setdefaultcloseoperation(windowconstants.dispose_on_close); cont = 0; //Contador do número de cliques no botão but = new JButton("Clique aqui"); texto = new JLabel("Total de cliques: 0"); painel = new JPanel(); painel.setlayout(new BoxLayout(painel,BoxLayout.Y_AXIS)); painel.add(but); painel.add(texto); //Registra o listener para ações no botão but.addactionlistener addactionlistener(this); getcontentpane().add(painel); pack(); Tratamento de Eventos Exemplo: //Método exigido pela interface ActionListener public void actionperformed (ActionEvent e) { cont++; texto.settext("total de cliques: "+cont); public static void main(string[] args){ JFrame janela = new TestaEventos(); janela.setvisible(true); 15

Tratamento de Eventos Classe ActionEvent Método getsource() Retorna uma referência ao objeto que gerou o evento. Método getactioncommand() Retorna informações sobre o objeto origem do evento, por exemplo, se chamado em um botão, por default retornará o string do texto do botão. Podemos usar esses métodos para gerenciar eventos de mais do que um componente, com o mesmo listener. Tratamento de Eventos Exemplo: import javax.swing.*; import java.awt.event.*; public class TestaEventos2 extends JFrame implements ActionListener { private JButton but1,but2; private JPanel painel; public TestaEventos2() {... but1.addactionlistener(this); but2.addactionlistener(this);... public void actionperformed(actionevent e) { if (e.getsource() == but1) settitle("botão 1"); else if (e.getsource() == but2) settitle("botão 2"); repaint(); //Redesenha a janela após mudanças... 16

Tratamento de Eventos Eventos relacionados a AWT são subclasses de java.awt.awtevent Objetos AWTEvents tem métodos para getsource() - devolver o objeto originador do evento getid() - devolver o tipo do evento getx(),gety() - devolver a posição de clique do mouse Tratamento de Eventos Exemplos de eventos, listeners e métodos ActionEvent ActionListener actionperformed() FocusEvent FocusListener focusgained() focuslost() ItemEvent ItemListener itemstatechanged() KeyEvent KeyListener keypressed() keyreleased() keytyped() MouseEvent MouseListener mouseclicked() mouseentered() mouseexited() mousepressed() mousereleased() TextEvent TextListener textvaluechanged() 17

Tratamento de Eventos Eventos gerados por componentes (resumo) JButton ActionEvent botão clicado JCheckbox ItemEvent item selecionado/desmarcado JCheckboxMenuItem ItemEvent selecionado/desmarcado item JList ListDataEvent seleção é alterada JMenuItem ActionEvent item selecionado/desmarcado JScrollbar AdjustmentEvent scrollbar Tratamento de Eventos Categoria JButton, JLabel, JList, JMenu, JTexField Interface ActionListener Métodos actionperformed (ActionEvent) Método do Componente addactionlistener (ActionListener) JCheckBox, JCheckboxMenuItem Choice, JLabel ItemListener itemstatechanged (ItemEvent) additemlistener (ItemListener) Capturar teclas digitadas KeyListener keypressed keyreleased keytyped (KeyEvent) addkeylistener (KeyListener) 18

Tratamento de Eventos Categoria Interface Métodos Método do Componente Tratar eventos de pressionar o mouse Tratar eventos de movimentação do mouse MouseListener MouseMotion Listener mousepressed mousereleased mouseentered mouseexited mouseclicked (MouseEvent) mousedragged mousemoved (MouseEvent) addmouselistener (MouseListener) addmousemotion Listener (MouseMotionListener) Tratamento de Eventos Categoria Interface Métodos Método do Componente JTextArea JTextField TextListener textvaluechanged (TextEvent) addtextlistener (TextListener) JFrames WindowListener windowclosing windowopened windowiconified windowdeiconified windowclosed windowactivated windowdeactivated (WindowEvent) addwindowlistener (WindowListener) 19

Tratamento de Eventos Profa. Isabel Harb Manssour (Material adaptado das aulas dos Profs: Luciana Nedel, Bernardo Copstein e Júlio P. Machado) Introdução Interfaces (revisão) Delegação de eventos Tratamento de eventos Classes Adaptadoras Capturando Eventos nos Componentes Swing Classes Adaptadoras Algumas das interfaces para a construção dos listeners possuem mais de um método. Ao implementar o listener, precisamos definir todos os métodos, mesmo que só estejamos interessados só em um tipo de evento. Ex.: MouseListener contém 5 métodos, e devemos implementar todos eles, mesmo que só utilizemos o método mousepressed() 20

Classes Adaptadoras Para facilitar a implementação de classes tratadoras de eventos, Java define classes adaptadoras (adapters) Classes adaptadoras Implementam as interfaces definindo métodos vazios (sem código) para cada um dos seus métodos Assim, o programador não precisa implementar toda a interface, mas crias uma subclasse de adapter redefinindo apenas os métodos que irá utilizar Classes Adaptadoras Algumas classes adaptadoras: ComponentAdapter - ComponentListener ContainerAdapter - ContainerListener FocusAdapter - FocusListener KeyAdapter - KeyListener MouseAdapter - MouseListener MouseMotionAdapter - MouseMotionListener WindowAdapter - WindowListener ActionListener não possui classe adaptadora pois só possui um método. 21

Classes Adaptadoras import java.awt.event.*; public class TesteAdaptadorMouse extends MouseAdapter { public void mousepressed(mouseevent e) { System.out.println("Botao pressionado"); Exemplo: public void mousereleased(mouseevent e) { System.out.println("Botao liberado"); Classes Adaptadoras Uma vez criada a classe que implementa a interface ou define uma subclasse de adapter, esta precisa ser instanciada e o objeto registrado como listener Entretanto, é possível implementar e registrar o listener em um passo só Basta implementar o listener como uma classe anônima (sem nome) interna (uma classe definida dentro de outra classe. 22

Classes Adaptadoras Classe anônima interna Facilidade de Java (a partir do JDK 1.1) São classes definidas dentro de outras classes e que podem ser criadas para tratamento de eventos Neste caso, a classe interna se chama inner class e a classe hospedeira se chama top-level class Classes Adaptadoras Exemplos: but.addactionlistener( new ActionListener() { public void actionperformed(actionevent e) { cont++; texto.settext("total de cliques: "+cont); ); janela.addwindowlistener( //código para executar quando a janela é fechada new WindowAdapter() { public void windowclosing(windowevent e) { System.exit(0); // fecha e sai do programa ); 23

Classes Adaptadoras Exemplos: JMenu mfile = new JMenu("File"); JMenuItem miopen = new JMenuItem("Open"); miopen.addactionlistener( new ActionListener() { public void actionperformed(actionevent e) { campo.settext(e.getactioncommand()); ); mfile.add(miopen); Classes Adaptadoras Observe que se forem utilizadas classes internas anônimas, não será possível tratar múltiplos componentes. Deveremos implementar uma classe anônima para cada componente. Não aconselhável para código de tratamento que seja muito longo. 24

Tratamento de Eventos Profa. Isabel Harb Manssour (Material adaptado das aulas dos Profs: Luciana Nedel, Bernardo Copstein e Júlio P. Machado) Introdução Interfaces (revisão) Delegação de eventos Tratamento de eventos Classes Adaptadoras Capturando Eventos nos Componentes Swing Capturando Eventos nos Componentes Swing JButton JTextField e JTextArea JCheckBox JRadioButton JList 25

JButton Construtores: JButton () JButton (String) - um botão com texto JButton (Icon) - um botão com imagem JButton (String, Icon) - um botão com texto e imagem JButton import javax.swing.*; import java.awt.event.*; import java.awt.*; public class TesteJButton extends JFrame implements ActionListener { private Container c; private JButton b1, b2; private JPanel p; public TesteJButton() { super("teste de Eventos de Botões"); b1 = new JButton("Botão 1"); b2 = new JButton("Botão 2"); b1.addactionlistener(this); b2.addactionlistener(this); p = new JPanel(new FlowLayout(FlowLayout.LEFT)); p.add(b1); p.add(b2); c = this.getcontentpane(); c.add(p); public void actionperformed(actionevent e){ String str = e.getactioncommand(); if(str.equals("botão 1")) settitle("botão 1"); else if(str.equals("botão 2")) settitle("botão 2"); 26

JTextField JTextField: entrada de uma única linha Construtores JTextField() JTextField(int tamanho) - um campo de texto com a largura especificada JTextField(String frase) - um campo de texto com preenchimento padrão JTextField(String frase, int tamanho) - campo de texto com texto padrão e largura especificados JTextArea JTextArea: texto de múltiplas linhas Construtores: JTextArea() JTextArea(int linhas, int colunas) - uma área de texto com o número especificado de linhas e colunas JTextArea(String texto) - uma área de texto já preenchida com valor padrão JTextArea(String texto, int linhas, int colunas) - uma área de texto com texto padrão, linhas e colunas especificados 27

JTextField e JTextArea import javax.swing.*; import java.awt.event.*; import java.awt.*; public class TesteJText extends JFrame { private Container c; private JTextArea ta; private JTextField tf; private JPanel p; private JScrollPane sp; private JButton bt; JTextField e JTextArea public TesteJText() { super("teste JTextArea e JTextField"); bt = new JButton("Insere linha:"); tf = new JTextField(10); p = new JPanel(); p.add(bt); bt.addactionlistener(new ActionListener() { public void actionperformed(actionevent e) {String f = tf.gettext(); ta.append(f); ); p.add(tf); ta = new JTextArea(8, 40); sp = new JScrollPane(ta); c = getcontentpane(); c.add(p, "South"); c.add(sp, "Center"); public static void main(string[] args){ TesteJText janela = new TesteJText(); janela.setdefaultcloseoperation(windowconstants.dispose_on_close); janela.pack(); janela.setvisible(true); 28

JCheckBox Construtores: JCheckBox() JCheckBox(String) - um botão de seleção com texto especificado JCheckBox(String, boolean) - um botão de seleção com o texto especificado, selecionado por padrão se argumento for true JCheckBox(Icon) JCheckBox(Icon, boolean) JCheckBox(String, Icon) JCheckBox(String, Icon, boolean) Para indicar uma opção como escolhida: botaoselecao.setselected(true); Para verificar o estado de um botão de seleção: status = botaoselecao.isselected(); JRadioButton Construtores: JRadioButton() JRadioButton(String) - um botão de rádio com o texto especificado JRadioButton(String, boolean) - um botão de rádio com o texto especificado, selecionado por padrão se argumento for true JRadioButton(Icon) JRadioButton(Icon, boolean) JRadioButton(String, Icon) JRadioButton(String, Icon, boolean) 29

ButtonGroup Agrupa os botões de seleção de forma que somente um pode estar selecionado por vez. Mais utilizado com os botões de seleção de rádio. Uso: ButtonGroup() - construtor add(abstractbutton) - adiciona botão de seleção ao grupo getselection() - retorna o botão atualmente selecionado do grupo JCheckBox, JRadioButton import javax.swing.*; import java.awt.event.*; import java.awt.*; public class TesteCheckRadio extends JFrame { private JCheckBox j1, j2; private JRadioButton r1, r2; private JPanel p; private Container c; private ButtonGroup bg; public TesteCheckRadio() { super("teste Check e Radio"); j1 = new JCheckBox("Valor1", true); j2 = new JCheckBox("Valor2"); r1 = new JRadioButton("Radio1"); r2 = new JRadioButton("Radio2", true); p = new JPanel(); 30

JCheckBox, JRadioButton p.add(j1); p.add(j2); j1.additemlistener(new ItemListener() { public void itemstatechanged(itemevent e){ boolean v = j1.isselected(); if(v) System.out.println("Caixa 1 selecionada!"); else System.out.println("Caixa 1 não selecionada!"); ); j2.additemlistener(new ItemListener() { public void itemstatechanged(itemevent e){ boolean v = j2.isselected(); if(v) System.out.println("Caixa 2 selecionada!"); else System.out.println("Caixa 2 não selecionada!"); ); bg = new ButtonGroup(); bg.add(r1); bg.add(r2); p.add(r1); p.add(r2); c = getcontentpane(); c.add(p); JList import javax.swing.*; import javax.swing.event.*; import java.awt.*; public class TesteJList extends JFrame { private String label[] = {"Segunda", "Terça", "Quarta", "Quinta", "Sexta", "Sábado", "Domingo"; private JList list; private JTextField textf; private JScrollPane pane; private Container c; public TesteJList() { super("teste JList"); textf = new JTextField(20); list = new JList(label); pane = new JScrollPane(list); getcontentpane().setlayout(new FlowLayout()); getcontentpane().add(pane); getcontentpane().add(textf);... 31

JList... list.addlistselectionlistener(new ListSelectionListener(){ public void valuechanged(listselectionevent e) { int i = list.getselectedindex(); textf.settext(label[i]); ); public static void main(string[] args){ TesteJList janela = new TesteJList(); janela.setdefaultcloseoperation( WindowConstants.DISPOSE_ON_CLOSE); janela.pack(); janela.setvisible(true); Exercício 1) Escreva um programa em Java que implemente uma calculadora simples (com operações de adição, subtração e multiplicação) para números inteiros. 32