• Nenhum resultado encontrado

Capítulo 12 Eventos de interacção

N/A
N/A
Protected

Academic year: 2021

Share "Capítulo 12 Eventos de interacção"

Copied!
9
0
0

Texto

(1)

Capítulo 12

Eventos de interacção

Eventos em Java

Referência aos pacotes awt e swing

Programação com botões e campos de texto

Introdução à Programação 2007/08 A. Lopes

Eventos, fontes de eventos e

atendimento de eventos

• Qualquer programa deve reagir/processar eventos. Por exemplo, eventos de interacção com o utilizador: pressão em teclas,

movimento do rato, clicks nos botões do rato, etc.

• Ao surgir um evento, desencadeia-se a notificação do atendedor de eventos. Este pertence a uma classe definida pelo programador da aplicação e os seus métodos descrevem as acções a realizar após o evento

• Um programa indica os eventos que pretende receber criando objectos de atendimento de eventos. Note-se que, em geral, um programa evita ser sistematicamente interrompido por eventos que não considera relevantes

(2)

Introdução à Programação 2007/08 A. Lopes

Pacotes awt e swing

• O pacote java.awt (Abstract Windowing Toolkit) do Java é apropriado para a manipulação de janelas gráficas e eventos associados

• O pacote javax.swing incorpora uma melhoria do awt, sendo escrito no topo deste último. As componentes de ambos podem ser utilizadas indistintamente, aumentando assim a versatilidade dos programas com janelas gráficas

Algumas classes do pacote awt

Object

MenuComponent Component

Container Button Menubar MenuItem

Window

Label

TextComponent Panel

Menu

Frame TextArea TextField

(3)

Introdução à Programação 2007/08 A. Lopes

Algumas classes do pacote swing

Object Component Container JPanel JComponent JScrollBar JMenuBar

JLabel JButton JTextField ...

JRadioButton JToogleButton

JCheckBox JFileChooser

Objectos visuais

Introdução à Programação 2007/08 A. Lopes

Exemplo: botão e respectivo

atendedor de eventos

• Criação do botão com uma componente JButton, ao qual se associa um ActionListener. A interface de ActionListener é:

• Definição de uma classe com o método actionPerformed, contendo as instruções a executar quando o botão é pressionado. O parâmetro evento contém os detalhes do evento, tais como o momento em que este ocorreu

• Criação de um objecto de atendedor de eventos e respectiva associação ao botão

public interface ActionListener {

public void actionPerformed(ActionEvent evento); }

ActionListener listener = new ClickListener(); button.addActionListener(listener);

(4)

Introdução à Programação 2007/08 A. Lopes

Ficheiro ClickListener.java

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

/** Um atendedor de eventos que escreve uma mensagem no ecrã. */ public class ClickListener implements ActionListener {

public void actionPerformed(ActionEvent event) { System.out.println("I was clicked.");

} }

Ficheiro Button

Tester

.java

import java.awt.event.ActionListener;

import javax.swing.JButton;

import javax.swing.JFrame;

/** Instalação de um atendedor de eventos (action listener). */

public class ButtonTester {

private static final int FRAME_WIDTH = 100; private static final int FRAME_HEIGHT = 60; !

public static void main(String[] args) {

JFrame frame = new JFrame(); // a janela com barra de título JButton button = new JButton("Click me!!"); // cria e adiciona um botão frame.add(button);

// define um atendedor de eventos e associa-o ao botão ActionListener listener = new ClickListener();

button.addActionListener(listener);

frame.setSize(FRAME_WIDTH, FRAME_HEIGHT); // define a dimensão da janela // quando a janela fechar, o programa deve terminar

// (programa e janela gráfica são conceitos distintos) frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true);

(5)

Introdução à Programação 2007/08 A. Lopes

Aplicação com botões

sempre que o botão é pressionado, acrescenta os respectivos juros ao saldo

Introdução à Programação 2007/08 A. Lopes

Modelo-Interacção-Controlo

1011 1100,0

Gestão de eventos/acções

(6)

Introdução à Programação 2007/08 A. Lopes

Aplicação com botões

• Criação de um objecto da classe JButton

• Utilização de um objecto da classe JLabel para mostrar a mensagem

• Utilização de um objecto da classe JPanel para conter/agrupar as várias componentes utilizadas na interface

JButton button = new JButton("Add Interest");

JLabel label = new JLabel("balance="+account.getBalance());

JPanel panel = new JPanel(); panel.add(button);

panel.add(label);

frame.add(panel); // adiciona o painel à janela

Aplicação com botões

• A classe Listener calcula o juro e mostra o novo saldo

• Incluir a classe AddInterestListener como “inner class” - classe declarada dentro de outra classe - de modo a que possa aceder às variáveis próximas account (da conta bancária) e label

class AddInterestListener implements ActionListener {

public void actionPerformed(ActionEvent event) {

double interest = account.getBalance() * INTEREST_RATE / 100; account.deposit(interest);

label.setText("balance=" + account.getBalance()); }

(7)

Introdução à Programação 2007/08 A. Lopes

Ficheiro InvestmentViewer1.java

Introdução à Programação 2007/08 A. Lopes

Processamento de texto de entrada

• Utilização de componente JTextField para disponibilizar espaço para entrada de informação

final int FIELD_WIDTH = 10; // em caracteres

final JTextField rateField = new JTextField(FIELD_WIDTH);

Para além de acrescentar os respectivos juros ao saldo sempre que o botão é pressionado, inclui um campo de texto para indicar a taxa de juro

(8)

Introdução à Programação 2007/08 A. Lopes

Processamento de texto de entrada

• Colocação de uma componente JLabel junto de cada campo de texto

• Disponibilização de um botão para o utilizador sinalizar que a informação de texto fornecida deve ser processada

• O método actionPerformed associado ao botão lê a informação escrita pelo utilizador nos campos de texto através do método getText() class AddInterestListener implements ActionListener { public void actionPerformed(ActionEvent event) {

double rate = Double.parseDouble(rateField.getText()); ...

} }

JLabel rateLabel = new JLabel("Interest Rate: ");

(9)

JButton An implementation of a "push" button.

JCheckBox An implementation of a check box - an item that can be selected or deselected, and which displays its state to the user.

JCheckBoxMenuItem A menu item that can be selected or deselected.

JComboBox A component that combines a button or editable field and a drop-down list. JComponent The base class for all Swing components except top-level containers. JFileChooser JFileChooser provides a simple mechanism for the user to choose a file. JFrame An extended version of java.awt.Frame that adds support for the JFC/Swing component architecture.

JLabel A display area for a short text string or an image, or both.

JMenu An implementation of a menu - a popup window containing JMenuItems that is displayed when the user selects an item on the JMenuBar.

JMenuBar An implementation of a menu bar. JMenuItem An implementation of an item in a menu.

JOptionPane makes it easy to pop up a standard dialog box that prompts users for a value or informs them of something.

JPanel is a generic lightweight container.

JPopupMenu An implementation of a popup menu - a small window that pops up and displays a series of choices.

Introdução à Programação 2007/08 A. Lopes

Algumas componentes do pacote swing

api/javax/swing

Introdução à Programação 2007/08 A. Lopes

Algumas componentes do pacote swing

JRadioButton An implementation of a radio button - an item that can be selected or deselected, and which displays its state to the user.

JRadioButtonMenuItem An implementation of a radio button menu item. JScrollBar An implementation of a scrollbar.

JScrollPane Provides a scrollable view of a lightweight component.

JSeparator JSeparator provides a general purpose component for implementing divider lines - most commonly used as a divider between menu items that breaks them up into logical groupings.

JSlider A component that lets the user graphically select a value by sliding a knob within a bounded interval.

JSpinner A single line input field that lets the user select a number or an object value from an ordered sequence.

JTextArea A JTextArea is a multi-line area that displays plain text.

JTextField JTextField is a lightweight component that allows the editing of a single line of text. JTextPane A text component that can be marked up with attributes that are represented graphically.

JToggleButton An implementation of a two-state button.

Referências

Documentos relacionados

A convergencia é garantida, caso a matriz do sistema algébrico seja definida positiva, o que inclui inúmeras aplicacoes, como, por exemplo, a equaciio solvente

Quando pensamos o imaginário coletivo como manifestações simbólicas de subjetividades grupais que conformam ambientes humanos, configurando.. 52 verdadeiros mundos em

Malha de Elementos Finitos Deformada e tensão de Von Mises Ficheiro de input de um processo ABAQUS (quad1_comentado.inp)... Malha de Elementos Finitos Deformada e tensão de Von

  há factores de resiliência em C/A institucionalizados que estão presentes nos que não têm psicopatologia e estão ausentes nos que têm psicopatologia;.  

Como foi determinado acima cada lado do eixo horizontal possui o tamanho 1000 se o resultado da equação for positivo a reta passará no lado positivo do eixo ( da metade para o

Porém, quando se trata de ossos sem essa importância, o eléctrodo selectivo de fluoreto, inventado por Frant e Ross (15), permite realizar as determinações necessárias para a

Tarefas para estimular a criacão de um novo modelo do sistema de atividade Formular uma hipótese de um novo sistema de atividade, novo objeto. Zona de

Portanto, o método hipotético dedutivo consiste na construção de conjecturas (hipóteses) que devem ser submetidas a testes, os mais diversos possíveis, à crítica intersubjetiva, ao