Slide 1 - IME-USP

Propaganda
Programação Gráfica em Java
Leiaute
Aula 03
Na aula passada vimos:
• Tratamento de eventos
• Fontes de eventos
• Ouvintes de eventos
2
O que você deve ter fixado:
• Conhecer os passos para que um objeto
seja “ouvido”.
• Decidir qual é a interface apropriada para
cada tipo de evento
• Criar classes tratadoras de eventos
• Separar o código associado a um evento
em três partes: fonte / tratador / destino
3
Na aula de hoje veremos:
• Gerenciadores básicos de leiaute
• Como e quando usar cada tipo de leiaute
• Leiaute nulo
4
Gerenciadores de Leiaute
• Controlam as dimensões e a posição dos
componentes dentro de um container
• Um gerenciador de leiaute é um
“algoritmo”, uma estratégia de disposição
dos componentes na tela.
• Cada contêiner tem definido um
gerenciador padrão.
5
Gerenciadores Básicos
•
•
•
•
•
BorderLayout
FlowLayout
CardLayout
GridLayout
GridbagLayout
• É possível mudar o leiaute usando o
método setLayout do contêiner... O leiaute
pode, inclusive, ser nulo.
6
BorderLayout
• Divide a tela em cinco regiões
– NORTH, WEST, SOUTH, EAST and CENTER
• “Estica” os componentes na direção das
setas vermelhas
N
W
E
S
7
BorderLayout
• Aloca espaço para os componentes
laterais e atribui o que sobrar àquele que
estiver no centro
• Utiliza o tamanho preferido na direção das
setas pretas
• É possível inserir espaços entre os
componentes usando o construtor:
– BorderLayout(int hgap, int vgap)
aula02.ex02.Selector.java
8
FlowLayout
• Insere o número máximo de componentes
possíveis na mesma linha.
• Utiliza tamanhos preferidos; não estica os
componentes
• Quando não cabem mais componentes
em uma linha, muda de linha.
9
FlowLayout
• Permite o configuração do alinhamento
dos componentes
– esquerda, centro e direita
• Permite a inserção de espaços entre os
componentes (gaps)
– FlowLayout (int align , int hgap, int vgap)
Flow.java
10
GridLayout
• Dispõem os componentes em uma grade
de retângulos com as mesmas dimensões
– new GridLayout (3,2) cria uma grade de três linhas e duas
colunas
• Um dos dois parâmetros pode ser zero
para indicar um número ilimitado de linhas
ou colunas
– new GridLayout (3,0) cria uma grade de três linhas e infinitas
colunas
11
GridLayout
• Grades horizontais com uma linha ou
verticais uma coluna são muito comuns
• Também permite o uso de gaps entre os
componentes
– new GridLayout(1, 2, 3, 4) cria uma grade de uma linha, duas
colunas, espaço horizontal de três pixel’s e espaço vertical de
quatro pixel’s entre os componentes
aula02.ex03.RGBColorChooser.ja
va
12
gaps
gap horizontal
LayoutDemo.java
gap vertical
13
CardLayout
• Permite a exibição de apenas um
componente por vez
• Pode receber uma quantidade indefinida
de componentes
• Possui métodos para alternar o
componente exibido a cada momento
14
GridbagLayout
• Permite a criação de virtualmente
qualquer leiaute.
• Semelhante ao GridLayout, porém de uso
complexo.
• Permite esticar linhas e colunas de formas
diferentes
15
GridbagLayout
• Depende de uma classe separada,
GridbagConstraints, para a configuração
de seus parâmetros.
–
–
–
–
–
–
–
Posição do componente
Espaço adicional na linha
Expansão
Ancoragem
Número de linhas/colunas
Afastamento interno
Afastamento externo (insets)
Calculator.java
16
Leiaute nulo
• Permite o posicionamento absoluto
• Posição e dimensões de cada
componente devem ser atribuídas
manualmente
• Não é recomendado pois tamanho de
componente (em AWT) depende do S.O.
MoveButton.java
17
O que você precisa saber...
• Qual o leiaute padrão de um componente
• Quais são as características de cada
leiaute
• Como (e quando) trocar o leiaute de um
componente
18
O que você precisa saber...
• Quais são os construtores possíveis e
qual a sua influência
• É possível compor um leiaute complexo
usando vários painéis com leiautes
simples
• Leiaute nulo
19
Na próxima aula veremos:
• Trabalho com gráficos em AWT
• Primitivas gráficas
• Cores
20
Download