Você está na página 1de 31

ALPOO

Prof. Thiago Henrique Jacob Oliveira Sousa



Aula 02 12/08/2014


1
Bibliografias utilizadas nesta aula

Friessen, Jeff. Beginning Java 7, Apress, 2010. pg. 435-477
O'Reilly. http://oreilly.com/openbook/javawt/book/index.html. pg. 1-3
Zukowski, John. The Definitive Guide to Java Swing Third Edition,
Apress, 2005. Pg. 1-5
Deitel, H. M. Java Como Programar. 8 Edio, Person, 2010. Pg. 419-
425
Anderson, Julie, Franceschi, Herv. Java 6 - Uma Abordagem Ativa de
Aprendizado, 2 Edio, LTC, 2008. pg. 528-533
DEVMEDIA. http://www.devmedia.com.br/introducao-a-interface-gui-
no-java/25646
COSTA, Bruno Vieira. https://www.youtube.com/watch?v=t7QaQsD90JY
Nedel, Luciana. http://www.inf.pucrs.br/flash/lapro2/lapro2_gui.pdf
Coding4Fun. http://blog.coding4fun.com.br/2014/01/interfaces-
graficas-swing-em-java-usando-windowbuilder-pro/
Rodrigues, Antnio. Curso de Java Interface Grfica
Rocha, Helder. Como construir aplicaes grficas e Applets
2
Contedo

Introduo
AWT
Swing
3
Introduo

Apesar de simples interfaces de usurio orientadas a caracteres
serem convenientes para demonstrar caractersticas do Java ou
para interagir com pequenas aplicaes utilitrias, elas so
inadequadas para necessidades mais sofisticadas, tais como
preencher formulrios ;

Java fornece APIs que permitem que voc crie e enriquea
interfaces grficas de usurio mais sofisticadas ;
4
Java Graphical User Interface
Introduo

Existe uma infinidade de funcionalidades disponveis nas
bibliotecas de classes Java, destinadas a prover a comunicao
homem-mquina grfica ;

Para criar janelas grficas no Java preciso utilizar uma das
bibliotecas grficas disponveis (AWT, Swing ou SWT) :

AWT foi uma primeira biblioteca grfica criada para Java;
Swing uma biblioteca grfica mais utilizada para Java, pois
tem todas as caractersticas da AWT mais atualizada;
SWT foi criada inicialmente pela IBM e hoje mantida pela
Eclipse foundation. O SWT mais rpido do Swing.

5
Java Graphical User Interface
Introduo

Os elementos bsicos necessrios para criar um GUI residem em
dois pacotes :

java.awt: Abstract Windowing Toolkit (classes bsicas);
javax.swing: Swing Components - fornece melhores
alternativas aos componentes definidos na classe java.awt.
6
Java Graphical User Interface
Contedo

Introduo
AWT
Swing
7
AWT

For years, programmers have had to go through the hassles of
porting software from BSD-based UNIX to System V Release 4
based UNIX, from OpenWindows to Motif, from PC to UNIX to
Macintosh (or some combination thereof), and between various
other alternatives, too numerous to mention ;

Getting an application to work was only part of the problem; you
also had to port it to all the platforms you supported, which often
took more time than the development effort itself .


8
Histria do AWT A dificuldade inicial
AWT

In the UNIX world, standards like POSIX and X made it easier to
move applications between different UNIX platforms ;

But they only solved part of the problem and didnt provide any
help with the PC world ;

Portability became even more important as the Internet grew ;


9
Histria do AWT A dificuldade inicial
AWT

The goal was clear: wouldnt it be great if you could just move
applications between different operating environments without
worrying about the software breaking because of a different
operating system, windowing environment, or internal data
representation ;?

On May 23, 1995, John Gage, then director of the Science Office
for Sun, introduced Java to the world ; .

10
Histria do AWT A soluo
AWT

With Java, you can create a program on one platform and deliver
the compilation output (byte-codes/class files) to every other
supported environment without recompiling or worrying about
the local windowing environment, word size, or byte order .
11
Histria do AWT A soluo
AWT

But, windowing systems still presents the biggest challenges for
portability .

When you move an application from Windows to the OSX, you
may be able to salvage most of the computational guts, but youll
have to rewrite the window interface code completely .

In Java, this part of the portability challenge initially was addressed
by a package called AWT, which stands for Abstract Window Toolkit
12
Histria do AWT O problema do sistemas de janelas
AWT

In turn, with AWT came native widgets, and with this early native
widget set came . . . Trouble .

The original component set that came with the Java platform,
AWT, was dependent on too many idiosyncrasies of the underlying
platform ;

Instead of providing a mature-looking component set, Java offered
the lowest common denominator version ;
13
Histria do AWT Problemas do AWT
AWT

If a feature wasnt available on all Java platforms, it wasnt available on
any Java platform .

And then you had to deal with all the browser/platform diferences ;

Each Java runtime environment relied on how the component set was
connected with the underlying platform-specific native widget set ;

If there were issues with the connection, first, they were specific to the
platform (and/or browser) and second, youhad to code around these
problems so your programs could be write-once, run anywhere (WORA),
the Java mantra of the time.
14
Histria do AWT Problemas do AWT
AWT

As Java technologies became more popular, users realized AWT
was extremely slow and unreliable, and you couldnt really do
much with the provided components .

Very few of them were available, and you couldnt use them in a
visual programming environment .

So, new technologies were introduced, such as just-in-time (JIT)
compilers to improve performance and, with Borlands help,
JavaBeans for a component-based development .
15
Histria do AWT Problemas do AWT
AWT

Eventually, Sun Microsystems teamed up with Netscape
Communication and other partners to create yet another library
called the Java Foundation Classes, or JFC .

Part of JFC is something called the Swing component set .
16
Histria do AWT Problemas do AWT
AWT

Interface grfica: componentes, layout, eventos
Java 1.0
Interface que roda de forma medocre em todas as plataformas
(Abominable Window Toolkit)
Modelo de eventos arcaico
Java 1.1
Melhora do modelo de eventos: por delegao usando design
pattern Observer
Java 1.2
JFC/Swing substitui totalmente componentes AWT
Mantm e estende a interface de eventos e layout
17
Linha dos tempo
AWT

Serve para oferecer infraestrutura mnima de interface grfica
(nivela por baixo)

Componentes tm aparncia dependente de plataforma;

Limitado em recursos devido a depender de suporte de cada
plataforma para os componentes oferecidos;

Bugs e incompatibilidades entre plataformas
18
Caractersticas bsicas do AWT
Contedo

Introduo
AWT
Swing
19
Swing

Criado em 1997
Extenso da AWT - Abstract Window Toolkit
Classes implementadas inteiramente em Java
Mesma estrutura que os componentes AWT
Componentes que fornecem melhores alternativas para a
implementao de interfaces grficas
JButton no lugar de Button,
JFrame no lugar de Frame, etc.
20
Histria e Caractersticas
Swing

As classes Swing so parte de um conjunto mais genrico de
capacidades grficas, chamado de Java Foundation Classes, ou JFC.
JFC suporta:
definio de botes, menus, etc.
desenho 2D (java.awt.geom)
funcionalidades drag-and-drop (java.awt.dnd)
API com acessibilidade a usurios (javax.accessibility)

Swing mais flexvel que java.awt porque implementada toda
em Java, enquanto que java.awt implementada em cdigo
nativo.
21
Swing e a JFC
Swing
22
Hierarquia de Classes
Swing
23
Hierarquia de Classes
Swing
24
Hierarquia de Classes
Swing

Algumas classes da hierarquia so bastante simples, outras so
complexas

JFrame, por exemplo:
2 construtores, 236 mtodos
23 mtodos declarados
17 mtodos herdados de Frame
19 mtodos herdados de Window
44 mtodos herdados de Container
124 mtodos herdados de Component
9 mtodos herdados de Object
25
Hierarquia de Classes
Swing

No possvel dominar as facilidades da linguagem com a mesma
velocidade com que se domina os comandos de uma linguagem
procedural

Uso da documentao da API durante a programao rotineiro e
essencial
26
Complexidade da Hierarquia
Swing

Uma interface grfica em Java baseada em dois elementos:
containers: servem para agrupar e exibir outros componentes
componentes: botes, labels, scrollbars, etc.

Dessa forma, todo programa que oferea uma interface vai possuir
pelo menos um container, que pode ser:

JFrame: janela principal do programa
JDialog: janela para dilogos
JApplet: janela para Applets
27
Containers e Componentes
Swing

Para construirmos uma interface grfica em JAVA,adicionamos
componentes (Botes, Menus, Textos, Tabelas,Listas, etc.) sobre a
rea da janela.

Por essa razo a rea da janela um container, ou seja, um
elemento capaz de armazenar uma lista de componentes.
28
Containers e Componentes
Swing

Desde que a classe Container uma sub-classe da classe
Component, todo objeto container tambm um Component.

A diferena bsica entre um objeto JFrame e um objeto Window
que o JFrame representa a janela principal de uma aplicao.

Antes de criar um objeto Window, preciso criar um objeto
JFrame.

29
Containers e Componentes
Swing

JFrame: Um objeto desta classe possui uma barra de ttulo e
caractersticas para receber menus e outros componentes.

JDialog: Usada para definir janelas de dilogo para entrada de
dados. Normalmente usada em resposta a uma opo de menu
selecionada. Definida em funo de um objeto JFrame.

JApplet: Classe base para applets Java. possvel desenhar e
adicionar menus e outros componentes em um JApplet.

JComponent: As subclasses de JComponent definem um conjunto
de componentes standard (menus, botes, checkboxes, etc.)
30
Containers e Componentes
Swing

Alguns atributos de componentes:
posio (x,y): posio do objeto em relao ao seu container;
nome do componente (myWindow.setName(Teste));
tamanho: altura e largura;
cor do objeto e cor de fundo;
fonte
aparncia do cursor;
objeto habilitado ou no (isEnabled(), myWindow.setEnabled);
objeto visvel ou no (isVisible(), myWindow.setVisible);
objeto vlido ou no.

Todos atributos so private.
31
Containers e Componentes