Você está na página 1de 7

21/08/2020

Desenvolvendo aplicações
com Interfaces Gráficas
(GUI’s)
Aplicação em Ling.de Programação Orientada a Objetos
Prof. Leandro Fernandes

Graphical User Interface – GUI

• As interfaces gráficas oferecem ao usuário uma forma mais intuitiva e


familiar de interação com a aplicação. Permitem que o processo ocorra de
modo mais fluido e flexível, além de proporcionar uma experiência
interativa mais rica.
• As GUIs são construídas a partir de componentes gráficos, que nada mais
são do que objetos com os quais o usuário pode interagir através do
mouse, teclado, toque, gesto e voz, por exemplo.
• Ao desenvolver uma GUI é importante selecionar os componentes gráficos
adequados para uma boa interação com o usuário.

1
21/08/2020

Construindo GUI’s em Java

Há diferentes maneiras para construir programas deste tipo, usando:


• AWT – Abstract Window Toolkit (java.awt.*):
• API básica para o desenvolvimento de GUIs e applets em Java
• Swing (javax.swing.*):
• Extensão da API básica com inclusão de componentes visuais de mais alto nível
• Java 2D (java.awt e java.awt.image):
• Adição de classes ao pacote básico para desenho avançado de imagens em 2D
• SWT – Standard Widget Toolkit (org.eclipse.swt.*):
• Biblioteca desenvolvida pela IBM e atualmente mantida pela Eclipse Foundation

Roteiro básico para criação de GUI’s

1. Instanciar os componentes de interface


• Janelas, menus, botões, campos de textos, etc.

2. Definir valores para suas propriedades e características.


• Texto, cor, tamanho, localidade, etc.

3. Adicionar os componentes em containers


• Ex: a quais elementos o componente pertence, isto é, como serão agrupados e qual a sua diagramação
(layout)

4. Estabelecer o tratamento de eventos de interface


• Ex: o que deve ocorrer quando o usuário clicar um botão ou como alterar o conteúdo de um componente
quando um outro sofre alguma alteração

2
21/08/2020

Abstract Window ToolKit – AWT

• Pacote de componentes visuais do JDK 1.0.x e JDK 1.1


• Conexão entre a aplicação e a interface gráfica nativa, despreocupando o programador dos
detalhes necessários para que a aplicação rode sobre aquele tipo de GUI.
• Mínimo denominador comum entre plataformas
• Implementação baseada em peers
• Os componentes AWT dependem de códigos C nativos (chamados peers) para manipular suas
funcionalidades e, portanto, dependente da plataforma.
• Look & feel varia de acordo com a plataforma
• Seus componentes são frequentemente chamados de heavyweight.

Componentes AWT

• Components, Containers, MenuComponents Component


• Todo Container é um Component
• Nem todo Component é um Container
• MenuComponentes formam uma hierarquia à parte Canvas Button ScrollBar CheckBox

• Containers
• Panel, Frame Label Choice Container List
• Components atômicos (que não são Containers)
• Button, TextField, TextArea, Label, Choice, Checkbox, TextComponent Panel Window
List, ...
• MenuComponents
• MenuBar, PopupMenu TextField TextArea Frame Dialog

3
21/08/2020

Quando ocorre um evento?

ActionEvent WindowEvent MouseEvent MouseMotionEvent


• Usuário clica em um • Usuário fecha, minimiza, • Usuário pressiona entra • Usuário move o mouse
botão, pressiona return maximiza, etc., uma janela ou sai com o mouse de sobre um componente
dentro de um textfield ou dentro um componente
escolhe um item de menu

ComponentEvent FocusEvent ItemEvent


• Componente fica visível, é • Componente recebe o • Seleção de uma tabela ou
adicionado a um container foco do teclado lista é modificada

Componentes e seus Eventos


EventObject
Component
AWTEvent

Canvas Button ScrollBar CheckBox


ActionEvent AdjustementEvent

Label Choice Container List TextEvent ComponentEvent ItemEvent

TextComponent Panel Window ContainerEvent WindowEvent

InputEvent
TextField TextArea Frame FocusEvent PaintEvent
Dialog
KeyEvent MouseEvent

4
21/08/2020

Observadores de Eventos (Listeners)

EventListener

AdjustementListener ActionListener TextListener ItemListener

MouseMotionListener ContainerListener ComponentListener WindowListener

MouseMotionAdapter ContainerAdapter ComponentAdapter WindowAdapter

KeyListener FocusListener MouseListener

KeyAdapter FocusAdapter MouseAdapter

Observadores de Eventos (Listeners)

AdjustementListener ContainerListener WindowListener


windowActivated(WindowEvent)
adjustementValueChanged(Adjustem componentAdded(ContainerEvent)
entEvent) windowClosed(WindowEvent)
componentRemoved(ContainerEvent) windowClosing(WindowEvent)
ActionListener ComponetListener windowDeactivated(WindowEvent)
actionPerformed(ActionEvent) windowDeiconified(WindowEvent)
componentHidden(ComponentEvent) windowIconified(WindowEvent)
ItemListener componentMoved(ComponentEvent) windowOpened(WindowEvent)
itemStateChanged(ItemEvent) componentResized(ComponentEvent) MouseMotionListener
componentShown(ComponentEvent) mouseDragged(MouseEvent)
TextListener mouseMoved(MouseEvent)
textValueChanged(TextEvent) FocusListener
MouseListener
focusGained(FocusEvent)
KeyListener mouseClicked(MouseEvent)
focusLost(FocusEvent) mouseEntered(MouseEvent)
keyPressed(KeyEvent)
mouseExited(MouseEvent)
keyReleased(KeyEvent) mousePressed(MouseEvent)
keyTyped(KeyEvent) mouseReseased(MouseEvent)

10

5
21/08/2020

Swing

• Implementação completamente feita em Java


• Os componentes foram inteiramente programados em Java, e estão
baseados no “Lightweight UI Framework” do JDK 1.1.
• Um rico conjunto de componentes alto nível.
• estrutura em árvore (tree view), list box, painéis com abas, etc.
• Faz parte da Java Foundation Classes (JFC), oferecendo recursos para:
acessibilidade, internacionalização, copy & paste, drag & drop, ...
• Gerenciadores de Layout (diagramadores)
• Look & feel plugável
• Componentes são freqüentemente chamados de lightweight.
• Projeto puro em Java, sem dependência de códigos nativos da plataforma.

11

AWT: Prós ... Swing: Prós...


• Velocidade: o uso de código • Portabilidade: implica em
AWT nativo aumenta o
desempenho do componente
poucas limitações específicas da
plataforma.

vs • Portabilidade: a maioria dos


navegadores web e das shells
gráficas dos SO suportam as
• Comportamento: permite
maior variedade já que não
estão limitados pelos códigos

Swing: classes AWT, podendo serem


executados sem a
necessidade de extensões ou
nativos.
• Suporte: o desenvolvimento em
plugins. Swing é mais ativo.
• Sensação e Aparência: os • Sensação e Aparência: permite
componentes AWT refletem desenhar os componentes GUI
mais precisamente a com a mesma aparência do SO.
sensação e o estilo visual do É mais fácil realizar mudanças
SO em que estão sendo globais para o seu Java
executados. programas que proporcionam
maior acessibilidade.

12

6
21/08/2020

AWT: Contra ... Swing: Contra ...


• Portabilidade: o uso de • Portabilidade: a maioria dos
AWT código nativo cria limitações,
pois alguns componentes
navegadores web não incluem
suporte as classes Swing.

vs podem não funcionar


completamente em outras
plataformas
• Desempenho: os componentes
Swing são geralmente mais
lentos. Dado serem puramente
Swing: • Desenvolvimento: há um
conjunto bem menor de
Java, os componentes Swing
manipulam, eles mesmos, sua
componentes, onerando os pintura ao invés de usar API´s
programadores ao criar seus nativas.
componentes baseados em • “Look and feel”: mesmo
componentes AWT. quando configurados para se
• Características: componentes parecerem com o SO em que
AWT não suportam certas estão, podem parecer
características como dicas diferentes aos seus homólogos
(tool-tips) e acessibilidade. nativos.

13

Você também pode gostar