Beruflich Dokumente
Kultur Dokumente
Gerenciadores de Layout
Mrio Antonio Meireles Teixeira DEINF UFMA
Baseado em material original de Joo Carlos Pinheiro CEFET/MA
Objetivos
Apresentar os gerenciadores de layout:
FlowLayout BorderLayout GridLayout BoxLayout GridBagLayout
19/09/07
Gerenciadores de Layouts
So fornecidos para organizar componentes GUI em um container para propsitos de apresentao
processam a maioria dos detalhes, fornecendo uma maneira automtica de posicionar os componentes grficos nos containers
Todos os gerenciadores de Layout implementam a interface LayoutManager ou a subinterface LayoutManager2 Cada container como um Painel ou Frame (molduras) possui um gerenciador de layout padro associado
3
Gerenciadores de Layouts
possvel desativar o Gerenciador de Layout caso o programador queira definir o tamanho ou posio dos componentes Para desligar layouts:
recipiente.setLayout(null);
19/09/07
Exemplo
1. public class NullLayout extends JFrame { 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. } } private JButton b1, b2, b3; NullLayout(String nome) { super(nome); Container ct = this.getContentPane(); ct.setLayout(null); b1 = new JButton("Maa"); b2 = new JButton("Pera"); b3 = new JButton("Uva"); // parametros: x, y, largura e altura b1.setBounds(10,10,150,40); b2.setBounds(10,60,150,40); b3.setBounds(10,110,150,40); ct.add(b1); ct.add(b2); ct.add(b3); this.setSize(180, 200); this.setVisible(true); Desativa o gerenciador de Layout
Um container mantm uma referncia a uma instncia particular do Gerenciador de Layout Sempre quando for necessrio posicionar o componente
ser invocado o Gerenciador de Layout Ou seja, se o usurio tentar definir o tamanho ou posio dos componentes (setSize() ou setLocation()) o Gerenciador de Layout ir anular a deciso
19/09/07
Poltica de Layout
Cada componente Java tem um tamanho preferencial: Normalmente o menor tamanho necessrio para apresentar o componente de maneira visualmente significativa
Exemplo de um boto o tamanho de sua etiqueta de texto
O Gerenciador de Layout equilibra duas consideraes: a poltica de layout e o tamanho preferencial de cada componente. A prioridade para a poltica de layout
8
19/09/07
3. 4.
Preencher o painel
Envolve montar componentes e acrescent-los ao painel
OBS: Se algum dos componentes for ele prprio um painel, as etapas 1 4 precisam ser executadas sucessivamente 9
Gerenciadores de Layouts
Existem vrios gerenciadores de layouts disponvel com a linguagem Java FlowLayout, BorderLayout, GridLayout BoxLayout, GridBagLayout Principais mtodos da classe java.awt.Container setLayout(LayoutManager m) void add(Component c) adiciona um componente ao container sob o controle do gerenciador de layout utilizado
10
19/09/07
FlowLayout
o gerenciador de layout mais simples Dispe os objetos seqencialmente da esquerda para a direita na ordem em que foram adicionados
container.setLayout(new FlowLayout());
11
FlowLayout
Todos os componentes possuem um mtodo chamado getPreferredSize(), usado pelos gerenciadores de layout para perguntar o tamanho de cada componente o padro para
java.awt.Applet, java.awt.Panel e javax.swing.JPanel
12
19/09/07
FlowLayout(int align)
Constri um layout com alinhamento estabelecido (FlowLayout.CENTER, FlowLayout.LEFT, FlowLayout. RIGHT)
Confira: FlowLayoutDemo.java 13
BorderLayout
o gerenciador padro para JFrames, JApplets e Caixas de Dilogo A classe BorderLayout herda diretamente da classe Object e implementa a interface LayoutManager2 (uma subinterface de LayoutManager) Organiza os componentes em cinco reas
Norte, Sul, Leste, Oeste e Centro
14
19/09/07
BorderLayout
Os componentes devem ser adicionadas a regies nomeadas no gerenciador de layout, caso contrrio no ficaro visveis:
NORTH, SOUTH, EAST, WEST, CENTER
Norte e Sul tm prioridade sobre Leste e Oeste, que tm prioridade sobre Centro Se for adicionado um componente ao Centro, este se expande at ocupar todo o espao restante na janela O componente colocado em uma regio pode ser um container ao qual sero anexados outros componentes (p.ex., JPanel) Confira: BorderLayoutDemo.java 15
GridLayout
Fornece flexibilidade para colocao de componentes Divide o container em uma grade de modo que os componentes podem ser colocados em linhas e colunas A classe GridLayout herda diretamente da classe Object e implementa a interface LayoutManager
16
19/09/07
GridLayout
Com o gerenciador GridLayout, a posio relativa dos componentes no alterada quando a rea redimensionada Os componentes so adicionados iniciando na clula na parte superior esquerda da grade e prosseguindo da esquerda para a direita at a linha estar cheia. Ento, o processo continua na prxima linha
Confira: GridLayoutDemo.java
17
Confira: PanelDemo.java 18
19/09/07
Confira: TextAreaDemo.java 20
10
19/09/07
Referncias
Deitel & Deitel. Java como Programar, 6 ed. Caps. 11 e 22; Materiais do site da SUN (http://java.sun.com)
21
11