1. Universidade Presbiteriana Mackenzie
Aula 2a: Java AWT
Prof. Ms. Daniel Arndt Alves
Faculdade de Computação e Informática
Linguagem de
Programação II
Daniel Arndt Alves Java AWT 1
2. Tópicos da Aula
• Pacotes gráficos de Java
– JFC
• AWT
• Swing
• API Java 2D
– API Java 3D
Daniel Arndt Alves Java AWT 2
3. Tópicos da Aula
• Componentes AWT
– Classe Button
– Classe Label
– Classe TextField
– Classe TextArea
– Classe Checkbox
– Classe Choice
– Classe List
– Classe Scrollbar
Daniel Arndt Alves Java AWT 3
5. Pacotes gráficos de Java
A linguagem Java possui várias funcionalidades
gráficas, implementadas através de classes em
pacotes. Os pacotes principais são:
• JFC/AWT
• JFC/Swing
• JFC/Java2D
• Java3D
Daniel Arndt Alves Java AWT 5
6. JFC
JFC é uma abreviação de Java Foundation
Classes, que engloba um grupo de detalhes
para auxiliar no desenvolvimento de
interfaces gráficas.
JFC foi anunciado na JavaOne Developer
Conference (1997).
Daniel Arndt Alves Java AWT 6
7. Detalhes englobados pelo JFC
• AWT
• Componentes Swing
• Suporte Look-and-Feel (Java Look, CDE/Motif
Look, Windows Look)
• API para acessibilidade
• API Java 2D
• Suporte para operações Drag-and-Drop
Daniel Arndt Alves Java AWT 7
8. AWT (Abstract Window Toolkit)
Pacote mais básico para se trabalhar com
interfaces gráficas em Java. Este pacote possui
classes para os principais componentes e
containers de uma interface, tais como
botões, janelas, etc, além de permitir um
tratamento bem simplificado de eventos.
Daniel Arndt Alves Java AWT 8
9. Componentes Swing
Componentes mais especializados que os
componentes AWT.
Os componentes Swing são implementados sem
nenhum código nativo (ao contrário dos
componentes AWT que, na maioria dos casos,
implementam várias funcionalidades através
de métodos nativos).
Daniel Arndt Alves Java AWT 9
10. API Java 2D
Pacote que permite facilmente incorporar alta
qualidade gráfica em gráficos 2D, textos,
imagens em aplicações e em applets.
Por exemplo, existe um extenso suporte para
composição de imagens e tratamento de
imagens com canal alfa.
Daniel Arndt Alves Java AWT 10
11. API Java 3D
A API Java 3D é uma interface para escrever
programas para exibir e interagir com
elementos tridimensionais.
A API disponibiliza uma coleção de construções
de alto nível para criar e manipular geometria
3D e estruturas para “renderizar” a
geometria.
Pode ser integrada com VRML.
Daniel Arndt Alves Java AWT 11
12. COMPONENTES AWT
O pacote AWT disponibiliza oito componentes básicos de
interface:
• Button
• Label
• TextField
• TextArea
• Checkbox
• Choice
• List
• Scrollbar
Daniel Arndt Alves Java AWT 12
13. Funcionamento dos Componentes
Quando estes componentes são mostrados, eles são
desenhados segundo o suporte gráfico do usuário.
O AWT implementa isto armazenando, dentro do
componente, um segundo objeto chamado Peer.
Quando um componente recebe uma mensagem para
ser desenhado, ele passa esta mensagem para o
objeto Peer, que faz a interface com o sistema
operacional usando métodos nativos.
Daniel Arndt Alves Java AWT 13
14. Funcionamento dos Componentes
Os objetos peer transformam requisições AWT em
rotinas da interface nativa do usuário e envia o
feedback do sistema operacional para o AWT.
COMPONENTE PEER
SISTEMA
OPERACIONAL
Daniel Arndt Alves Java AWT 14
15. Classe Button
Daniel Arndt Alves Java AWT 15
Implementa o elemento de interface botão com
rótulo.
Construtores:
• public Button( ) Botão sem rótulo
• public Button(String rótulo) Botão com rótulo
Alguns métodos:
• public String getLabel() rótulo do botão
• public void setLabel(String r) altera rótulo do botão
17. Classe Label
Daniel Arndt Alves Java AWT 17
Implementa o elemento de interface rótulo.
Construtores:
• public Label( ) Rótulo vazio
• public Label (String rótulo) Rótulo não-vazio
Alguns métodos:
• public String getText() texto do rótulo
• public void setText(String r) altera texto do rótulo
19. Classe TextField
Implementa o elemento de interface caixa de texto.
Construtores:
• public TextField( ) Tamanho do container
• public TextField(int cols) Tamanho em cols
• public TextField(String texto) Tamanho do texto
Alguns métodos:
• public String getText() texto no componente
• public void setText(String r) altera texto no componente
Daniel Arndt Alves Java AWT 19
21. Classe TextArea
Implementa o elemento de interface área de texto.
Construtores:
• public TextArea(int lin, int cols)
Tamanho lin x cols
• public TextArea(String txt, int lin, int cols)
Tamanho lin x cols com texto inicial txt
Alguns métodos:
• public String getText() texto no componente
• public void setText(String r) altera texto no componente
Daniel Arndt Alves Java AWT 21
23. Classe Checkbox
Implementa o elemento de interface botão liga/desliga.
Construtores:
• public Checkbox( ) Botão sem rótulo
• public Checkbox(String rótulo) Botão com rótulo
Alguns métodos:
• public String getLabel() rótulo do botão
• public void setLabel(String r) altera rótulo do botão
• public boolean getState() retorna o estado do botão
Daniel Arndt Alves Java AWT 23
25. Radio Buttons
Daniel Arndt Alves Java AWT 25
Componentes Checkbox podem ser agrupados através
de instância da classe CheckboxGroup.
Somente um dos componentes do CheckboxGroup
pode estar selecionado num determinado instante.
Botões com estas características são chamados de
“radio buttons”.
Construtor:
public Checkbox(String rotulo,
CheckboxGroup grupo, boolean estado_inicial)
26. Radio Buttons (Exemplo)
CheckboxGroup grupo = new CheckboxGroup( );
Checkbox op1 = new Checkbox("masculino",grupo,true);
Checkbox op2 = new Checkbox("feminino",grupo,false);
Daniel Arndt Alves Java AWT 26
27. Classe Choice
Implementa o elemento de interface lista pop-down.
Construtor:
public Choice( )
Alguns métodos:
• public synchronized void addItem(String item)
Adiciona um item à lista
• public String getSelectedItem( )
String da opção escolhida
Daniel Arndt Alves Java AWT 27
28. Classe Choice (Exemplo)
Choice c = new Choice();
c.addItem("Primeiro");
c.addItem("Segundo");
c.addItem("Terceiro");
c.addItem("Quarto");
Daniel Arndt Alves Java AWT 28
29. Classe List
Implementa o elemento de interface lista, com
possibilidade de múltiplas escolhas.
Construtor:
public List(int lin,boolean multiplo)
lin : número de opções visíveis
multiplo: true (seleção múltipla)
false (seleção simples)
Daniel Arndt Alves Java AWT 29
30. Classe List
Alguns métodos:
• public synchronized void addItem(String item)
Adiciona um item à lista
• public String[] getSelectedItems( )
Vetor de Strings com as opções escolhidas
Daniel Arndt Alves Java AWT 30
31. Classe List (Exemplo)
List c = new List(3,true);
c.addItem("Primeiro");
c.addItem("Segundo");
c.addItem("Terceiro");
c.addItem("Quarto");
Daniel Arndt Alves Java AWT 31
32. Classe Scrollbar
Implementa o elemento de interface barra de rolagem.
Construtores:
public Scrollbar( ) barra de rolagem vertical
public Scrollbar(int orientação,
int valor_inicial,
int incremento,
int mínimo,
int máximo)
Daniel Arndt Alves Java AWT 32
33. Classe Scrollbar
Alguns métodos:
• public int getValue()
Posicionamento da barra de rolagem
• public void setValue(int pos)
Muda posicionamento da barra de rolagem para pos
Daniel Arndt Alves Java AWT 33
34. Classe Scrollbar (Exemplo)
Scrollbar b1=new Scrollbar();
Scrollbar b2=new Scrollbar(Scrollbar.HORIZONTAL, 50, 10, 0, 100);
Daniel Arndt Alves Java AWT 34
35. Containers
Containers são elementos que armazenam
componentes gráficos. Não é possível usar um
componente sem que ele esteja dentro de um
container.
Containers podem, também, armazenar outros
containers.
Daniel Arndt Alves Java AWT 35
36. Containers do AWT
O AWT trabalha com quatro tipos de containers:
• Painel (Panel)
• Janela (Window)
• Frame
• Diálogo (Dialog)
Daniel Arndt Alves Java AWT 36
37. Painel
Painel é um container “puro”, isto, não é
propriamente uma janela e seu único propósito é
organizar os componentes numa janela, utilizando
gerenciadores de layout.
Um painel, como qualquer outro container, pode ser
colocado dentro de outro painel.
Uma classe muito útil, derivada da classe Panel, é a
classe Applet.
Daniel Arndt Alves Java AWT 37
38. Declaração e utilização de painéis
Button botaoAB=new Button("Abrir");
Button botaoFE=new Button("Fechar");
Panel painel=new Panel(); // Instancia Painel
painel.setLayout(new FlowLayout());
painel.add(botaoAB); // Coloca botão Abrir no painel
painel.add(botaoFE); // Coloca botão Fechar no painel
Daniel Arndt Alves Java AWT 38
39. Janelas
A classe Window, que implementa as funcionalidades de
janelas em Java, é muito parecida como Panel, exceto
que ela cria sua própria janela de primeiro nível, em
vez de estar contida dentro de um Panel. São muito
utilizadas para menus do tipo pop-up.
Geralmente, utiliza-se frames no lugar de janelas, uma
vez que são mais especializados.
Daniel Arndt Alves Java AWT 39
40. Frame
Frames são janelas especializadas que
conseguem interagir com o usuário
independente de outras janelas.
Com frames, um aplicativo pode criar várias
janelas independentes.
Daniel Arndt Alves Java AWT 40
41. Declaração e utilização de frames
Button botaoAB=new Button(“Abrir...”);
Button botaoFE=new Button(“Fechar...”);
Frame frame=new Frame(“Exemplo de Frame”);
setLayout(new FlowLayout());
frame.add(botaoAB); // Coloca botão Abrir no frame
frame.add(botaoFE); // Coloca botão Fechar no frame
frame.show(); // Exibe o frame
frame.hide(); // Oculta o frame
Daniel Arndt Alves Java AWT 41
42. Diálogos
Diálogos são janelas que são ativadas
momentaneamente para redirecionar um
processamento. Por exemplo, solicitar confirmação
de substituição de arquivo numa operação de cópia.
Daniel Arndt Alves Java AWT 42
43. Diálogos
Diálogos podem ser:
• modais: impedem a entrada para outras janelas
enquanto estão ativos.
• não-modais: não impedem a entrada para outras
janelas.
Os elementos de um diálogo são definidos por um
frame.
Daniel Arndt Alves Java AWT 43
44. Declaração e utilização de diálogos
Button botaoOK=new Button("OK");
Button botaoNO=new Button("NO");
Frame frame=new Frame("Exemplo de Frame");
Dialog dialogo; // Referência para diálogo
frame.setLayout(new FlowLayout());
frame.add(new Label("Deseja fechar o arquivo? ");
frame.add(botaoOK); // Coloca botão OK no frame
frame.add(botaoNO); // Coloca botão Cancel no frame
dialogo=new Dialog(frame,"Exemplo de Dialogo",true); // Cria diálogo
// | | |
// frame referência título do diálogo modal ( false=não modal)
dialogo.show(); // Mostra diálogo
Daniel Arndt Alves Java AWT 44