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