• Nenhum resultado encontrado

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

N/A
N/A
Protected

Academic year: 2021

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

Copied!
13
0
0

Texto

(1)

Tratamento de Eventos em

Programas com

GUI - Graphical User Interface

Jorge H. C. Fernandes

([email protected])

UFRN

(2)

Programas com GUI

• Separação De Abstrações

• Arquitetura em Camadas

• Necessidade de Tratamento de Eventos

• Componentes de um Programa Baseado em Eventos

• Arquitetura de Um Programa com Interface Gráfica

• de Eventos

– Componentes Visuais (java.awt) e Seus Eventos

– Eventos e seus Observadores

– Observadores e Métodos de Notificação

(3)

Separação de Abstrações

• Para que um programa seja construído

de forma modular e manutenível é

imprescindível a separação entre:

– modelo do sistema

• as chamadas “regras de negócios”

– Interface com usuário

• define a forma como o programa interage com

o usuário e como as regras de negócios são

ativadas

(4)

Arquitetura em Camadas

Além dos módulos de Interface com o Usuário e Regras de

Negócios, a grande maioria dos programas de suporte a sistemas de

informações gerenciais ainda contém um módulo de Persistência

(também chamado de Armazenamento/Recuperação de Dados)

Estes três módulos são normalmente organizados em forma de

camadas, conforme o esquema abaixo:

Em um esquema de camadas a interface interage apenas com as

regras de negócio, e as regras de negócio interagem com a interface e

com a camada de persistência

Interface com o Usuário

Persistência

Regras de Negócio

(5)

A Necessidade de Usar

Tratamento de Eventos

• De modo diferente de um programa com interface

baseada em textos (do tipo que usa comandos

System.out.println

e

IO.readStr()

), programas com interface

gráfica oferecem uma vasta quantidade de

alternativas de entrada de dados ao usuário.

• O usuário podem adotar um dentre vários caminhos

possíveis, e o programador não consegue controlar o

fluxo da mesma forma que o programa com interface

textual.

• A solução usualmente adotada em programas

modernos é construir a interação através do

tratamento de eventos

(6)

Componentes de um

Programa Baseado em Eventos

Vários Componentes Visuais, também chamados de widgets

aparecem na tela e capturam interação do usuário;

Vários Eventos

produzidos como resultado da interação do usuário com os componentes visuais, o que normalmente ocorre através do mouse e teclado;

Um Despachante de Eventos

organiza os eventos produzidos pelos componentes numa fila, que normalmente

não é manipulada pelo programador

Vários Observadores de Eventos, também chamados de listeners

vários objetos que podem registrar o interesse por eventos específicos, conversando diretamente com os Componentes Visuais ou através do Despachante. Os observadores são notificados pelo despachante quando um evento de interesse ocorre e invocam um método específico sobre a Fachada;

Uma Fachada das Regras de Negócio,

um único objeto que tem por função receber as invocações dos observadores e executar a operação adequada

(7)

Arquitetura de um Programa

com Interface Gráfica

Componentes Visuais

:Event :Event :Event

:Despachante de Eventos

:Event Listener :Event Listener :Event Listener :Event :Event :Event :Event :Event :Event

notifica

notifica

notifica

:Universidade

:Curso :Curso :Curso :Aluno :Aluno :Aluno :Aluno :Aluno :Aluno :Aluno :Aluno :Aluno

Regras de Negócio

Fachada

invoca

invoca

invoca

Produz eventos

Produz eventos

Produz eventos

(8)

TextField TextArea CheckBox Button Canvas Panel Label TextComponent List ScrollBar Component Window Container EventObject AWTEvent AdjustementEvent ItemEvent TextEvent ActionEvent ComponentEvent FocusEvent PaintEvent WindowEvent ContainerEvent InputEvent Frame Dialog Choice KeyEvent MouseEvent

Componentes Visuais e Eventos que

Produzem

(9)

EventObject AWTEvent AdjustementEvent ItemEvent TextEvent ActionEvent ComponentEvent FocusEvent PaintEvent WindowEvent ContainerEvent InputEvent KeyEvent MouseEvent ComponentAdaper ContainerAdapter KeyAdapter FocusAdapter WindowAdapter MouseMotionAdapter MouseAdapter FocusListener MouseListener ComponentListener ContainerListener ActionListener AdjustementListener KeyListener WindowListener MouseMotionListener TextListener ItemListener EventListener

(10)

actionPerformed(ActionEvent) adjustementValueChanged(AdjustementEvent) ComponentAdaper ContainerAdapter KeyAdapter FocusAdapter WindowAdapter MouseMotionAdapter MouseAdapter FocusListener MouseListener ComponentListener ContainerListener ActionListener AdjustementListener KeyListener WindowListener MouseMotionListener TextListener ItemListener EventListener componentHidden(ComponentEvent) componentMoved(ComponentEvent) componentResized(ComponentEvent) componentShown(ComponentEvent) itemStateChanged(ItemEvent) textValueChanged(TextEvent) windowActivated(WindowEvent) windowClosed(WindowEvent) windowClosing(WindowEvent) windowDeactivated(WindowEvent) windowDeiconified(WindowEvent) windowIconified(WindowEvent) windowOpened(WindowEvent) mouseDragged(MouseEvent) mouseMoved(MouseEvent) componentAdded(ContainerEvent) componentRemoved(ContainerEvent) focusGained(FocusEvent) focusLost(FocusEvent) mouseClicked(MouseEvent) mouseEntered(MouseEvent) mouseExited(MouseEvent) mousePressed(MouseEvent) mouseReseased(MouseEvent) keyPressed(KeyEvent) keyReleased(KeyEvent) keyTyped(KeyEvent)

Observadores

e seus Métodos

de Notificação

(11)

Trecho de Código para

Tratamento de Eventos

// 1 - Criando um componente visual

MenuItem menuArquivoLerDados = new MenuItem("Ler Dados");

// 2 - Criando um observador de Eventos através de uma classe anônima

ActionListener listener = new java.awt.event.ActionListener() {

// 2.1 - implementando o método para receber uma notificação

public void actionPerformed(ActionEvent e) {

// 2.1.1 - invoca o método da fachada

menuArquivoLerDados_actionPerformed(e);

}

}

// 3 - Registrando um observador (listener) junto a um componente

menuArquivoLerDados.addActionListener();

(12)

Panel

BorderLayout

Label

Panel

Button

Button

Button

Panel

Label

TextField

Label

TextField

GridLayout

GridLayout

(13)

Para ler mais

• Java: Como Programar, Deitel & Deitel,

Capítulos 12 e 13.

Referências

Documentos relacionados

Os principais estudos que validam o uso da Escala para Avaliação da Competência para o Autocuidado ASA, apontam que menor índice, nunca, refere-se a menor gerência do indivíduo para

a) A região toracolombar foi a que apresentou maior número de profissionais com queixa álgica (50%) e em relação à alteração de funcionalidade da coluna

Apesar da listagem de 1759 só identificar dois filhos para o casal, quando se analisa os registros de batismos fica- se sabendo que eles tiveram muitos outros e que tinham

‘Vinhão’ at different genetic levels related with berry skin color: MYBA1 and MYBA2 genes polymorphisms and tran- scriptional regulation during berry development of genes involved

a cooperativa ainda está enfrentando uma sucessão de pro­ blemas; no meu entendimento, ainda continuamos amadores, e esse é o grande problema, não apenas nosso,

7 - MOBILIDADE ELÉTRICA: no sector dos transportes, a contínua redução dos custos de baterias nos módulos de veículos elétricos (VE) conjugada com recentes políticas

Por seu turno, o mundo do trabalhador assume novas características como a incerteza sobre as trajectórias profissionais, a protecção social e as oportunidades;