Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
O Pacote AWT
O pacote AWT contm as classes necessrias para a gerao de componentes GUI, como
formulrios, painis, botes, caixas de texto, labels, etc.
Frames
Frames so os formulrios bsicos do Java, instncias da classe java.awt.Frame. Um frame
representa a prpria janela, onde fica a barra de ttulos e onde so colocados outros componentes. O frame
o continer (componente que pode receber outros componentes sobre ele) natural do pacote AWT,
embora alguns outros componentes tambm possam ser conteiners (o panel, por exemplo).
A posio dos componentes em um continer determinada pelo tipo de layout escolhido, o que
pode afetar tambm o tamanho dos componentes. Alguns layouts mais comuns: FlowLayout - posiciona
componentes em uma linha ou conjunto de linhas; quando uma linha fica cheia, uma nova linha criada,
BorderLayout - possibilita formatar a posio dos componentes dentro do continer em relao s suas
bordas, GridLayout permite criar linhas e colunas para posicionar os componentes dentro do continer,
NullLayout permite o posicionamento livre dos componentes.
Alguns exemplos de mtodos fundamentais dos frames: setLayout(...) - para definir o tipo de layout
usado, add() - para adicionar componentes (botes, caixas de texto, etc.) ao frame, setVisible(...) - para
tornar o frame visvel.
Panels
So conteiners mais simples que podem ser colocados sobre frames e tambm recebem outros
elementos como botes, labels, etc.
Nunca perca de vista o fato de Java ser uma linguagem de 3a. Gerao, o que exige um maior grau de entendimento
do que acontece por dentro das solues.
Obs.: repare que o "x" para fechar a janela no funciona... Ainda. Para fechar a janela: feche o
ambiente onde o programa foi executado ou interrompa o aplicativo no Gerenciador de Tarefas ou, se o
ambiente permitir, interrompa o processo rodado (no JCreator, h um stop tool no menu para isso).
Frame com 2 labels (maior de dois nmeros aleatrios)
import java.awt.*;
public class Exemplo2 {
public static void main(String args[]) {
Frame f = new Frame();
Label l1 = new Label();
Label l2 = new Label();
f.setLayout(new BorderLayout());
f.add("North",l1);
f.add("South",l2);
// teste com East, West e Center tambm
f.setSize(300,100);
f.setVisible(true);
f.setTitle("Programa Grafico");
int N1 = (int) (Math.random()*100);
int N2 = (int) (Math.random()*100);
l1.setText("Numeros: "+N1+" e "+N2);
if (N1>N2) {
l2.setText("O maior e' "+N1);
}
else {
l2.setText("O maior e' "+N2);
}
}
}
//construtor
public Exemplo3(String x) {
super(x);
}
public void paint (Graphics g) {
g.setColor(Color.red);
g.drawString(x,50,50);
}
public static void main (String arg []) {
Exemplo3 ex3 = new Exemplo3("Novo Frame!");
ex3.setSize(200,200);
ex3.setVisible(true);
}
}
Eventos
Da mesma forma que existe mais de um pacote grfico em Java, tambm existe mais de uma forma
de tratar eventos. A forma mais antiga prev aes de forma mais simples e ainda pode ser usada quando a
complexidade for mnima (embora seja considerado ultrapassado - deprecated). O modelo mais atual se
vale de listeners (escutadores) de eventos. Mais profundidade nos eventos ser vista no prximo perodo.
Obs1: repare que foi especificado o layout como null, ento pudemos definir posies e tamanhos
livremente com o setBounds. O uso de layouts "na mo" complexo e trabalhoso. No esse o nosso
objetivo aqui, queremos apenas entender como funciona o mecanismo Java para componentes grficos e
eventos. Para desenhos mais elaborados, devemos usar ferramentas grficas como o NetBeans.
Obs2: preste ateno nos atributos definidos como static. Eles foram definidos assim para
poderem ser usados no main que static tambm (caso contrrio, no poderiam ser usados nele).
Exerccios
1) Altere o exerccio acima para escrever no Label o contedo do TextField.
2) Altere o segundo exemplo (maior de dois nmeros) para o usurio digitar os nmeros e a resposta
s vir depois de apertar um boto.