Sei sulla pagina 1di 9

Conhecendo Gerenciadores de Layout GUI do Java

http://www.devmedia.com.br/conhecendo-gerenc...

TECNOLOGIAS

REVISTAS

CURSOS

MVP

LOGIN

post favorito

comentrios
Conhece a assinatura MVP?

Conhecendo Gerenciadores de Layout GUI do Java


Veja neste artigo como os gerenciadores de layout organizam os componentes GUI em um continer para propsitos de apresentao. Saiba as capacidades bsicas de layout para determinar a posio e o tamanho exato de cada componente GUI.
Publicidade

Curtir

Gostei (2)

(0) Servios

Gerenciadores de Layout
Todos os gerenciadores de layout implementam a interface LayoutManager que faz parte do pacote java.awt. Existe o mtodo setLayout da classe Container que

Inclua um comentrio Adicionar aos Favoritos Marcar como lido/assistido Incluir anotao pessoal

DevMedia
Curtir

Anuncie | Loja | Publique | Assine | Fale conosco

19.372 pessoas curtiram DevMedia.

Plug-in social do Facebook

posio GUI com posicionamento absoluto, mas acaba perdendo controle sobre tamanho e o posicionamento dos componentes GUI. Reservados a Hospedagem web por Porta 80 Web Todos os Direitos

1 of 9

02/10/2014 04:35 PM

Conhecendo Gerenciadores de Layout GUI do Java

http://www.devmedia.com.br/conhecendo-gerenc...

TECNOLOGIAS REVISTAS CURSOS MVP toda IDE tem uma ferramenta de design que permite arrastar e soltar (drag

LOGIN

and drop) os componentes para uma rea de desenho. Cada continer individual pode ter apenas um gerenciador de layout, mas vrios contineres no mesmo aplicativo podem utilizar cada um gerenciador de layout. Os gerenciadores de layout so diversos, mas nesse artigo vamos conhecer o FlowLayout, BorderLayout e GridLayout como apresentado abaixo.

FlowLayout
Ocorre quando os componentes GUI so colocados em um continer da esquerda para a direita na ordem em que so adicionados no continer. Quando a borda do continer alcanada, os componentes continuaro a ser exibidos na prxima linha. A classe FlowLayout permite aos componentes GUI ser alinhados esquerda, centralizados (padro) e alinhados direita. Na Listagem 1 a classe est criando e adicionando 3 objetos Jbutton ao aplicativo. Os componentes cam centralizados por padro. A ao desse aplicativo ser relacionada aos botes. Quando o usurio clicar no boto Direita o alinhamento do gerenciador muda para um FlowLayout direita e assim acontece com os outros botes quando clicado, cada um com seu alinhamento. Cada boto tem seu prprio handler de evento que declarado com um uma classe interna annima que implementa ActionListener. Listagem 1: Classe com as funes FlowLayout
import java.awt.Container; import java.awt.FlowLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; public class FlowLayoutFrame extends JFrame { private JButton botaoEsquerdo; private JButton botaoDireito; private JButton botaoCentral; private FlowLayout layout; private Container container; //BOTO PARA CONFIGURAR O ALINHAMENTO ESQUERDA //BOTO PARA CONFIGURAR O ALINHAMENTO DIREITA //BOTO PARA CONFIGURAR O ALINHAMENTO CENTRALIZADO //OBJETO LAYOUT //CONTINER PARA CONFIGURAR LAYOUT

//CONFIGURA GUI E REGISTRA LISTENERS DE BOTO public FlowLayoutFrame() { super("Demonstrao de um FlowLayout"); layout = new FlowLayout(); container = getContentPane(); //CRIA FLOWLAYOUT //OBTM CONTEINER PARA LAYOUT

2 of 9

02/10/2014 04:35 PM

Conhecendo Gerenciadores de Layout GUI do Java

http://www.devmedia.com.br/conhecendo-gerenc...

TECNOLOGIAS

REVISTAS

CURSOS

MVP

LOGIN

//CONFIGURA LEFTBUTTON E REGISTRA LISTENER botaoEsquerdo = new JButton("Esquerda"); add(botaoEsquerdo); //CRIA O BOTO LEFT //ADICIONA O BOTO ESQUERDO AO FRAME

botaoEsquerdo.addActionListener(new ActionListener() { @Override //PROCESSA O EVENTO BOTO ESQUERDO public void actionPerformed(ActionEvent e) { layout.setAlignment(FlowLayout.LEFT); //REALINHA OS COMPONENTES ANEXADOS layout.layoutContainer(container); } } ); //CONFIGURA O BOTO CENTRAL E REGISTRA O LISTENER botaoCentral = new JButton("Centro"); add(botaoCentral); //CRIA P BOTO CENTRAL //ADICIONO O BOTO AO FRAME

botaoCentral.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { layout.setAlignment(FlowLayout.CENTER); //REALINHA OS COMPONENTES ANEXADOS layout.layoutContainer(container); } } ); //CONFIGURA O BOTO DIREITO E REGISTRA O LISTENER botaoDireito = new JButton("Direita"); add(botaoDireito); //ADICIONA BOTO

botaoDireito.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { layout.setAlignment(FlowLayout.RIGHT); layout.layoutContainer(container); } } ); } }

Listagem 2: Classe testadora


import javax.swing.JFrame;

3 of 9

02/10/2014 04:35 PM

Conhecendo Gerenciadores de Layout GUI do Java

http://www.devmedia.com.br/conhecendo-gerenc...

TECNOLOGIAS

REVISTAS

CURSOS

MVP

LOGIN

public static void main(String[] args) { FlowLayoutFrame fl = new FlowLayoutFrame(); fl.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); fl.setSize(600, 75); fl.setVisible(true); //CONFIGURA O TAMANHO DA TELA //CONFIGURA A VISIBILIDADE

} }

Border Layout
um gerenciador de layout que organiza os componentes, sendo a parte superior do continer dividida em cinco regies: NORTH SOUTH EAST WEST CENTER A classe BorderLayout estende a Object e implementa a interface LayoutManager2 sendo uma subinterface de LayoutManager que adiciona vrios mtodos para obter um processamento de layout aprimorado. Listagem 3: Classe de funes Border Layout
import java.awt.BorderLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; public class BorderLayoutFrame extends JFrame implements ActionListener { private JButton[] botoes; private BorderLayout layout; public BorderLayoutFrame() { super("Demo LayoutFrame"); layout = new BorderLayout(5,5); //ESPAOS DE 5 PIXELS setLayout(layout); botoes = new JButton[nomes.length]; //CRIA JBUTTONS E REGISTRA OUVINTES for(int count = 0; count < nomes.length; count++){ //CONFIGURA O TAMANHO DO ARRAY //ARRAY DE BOTES PARA OCULTAR PARTES

private static final String[] nomes = {"Esconde Norte", "Esconde Sul", "Esconde Leste

4 of 9

02/10/2014 04:35 PM

Conhecendo Gerenciadores de Layout GUI do Java

http://www.devmedia.com.br/conhecendo-gerenc...

TECNOLOGIAS
}

REVISTAS

CURSOS

MVP

LOGIN

//ADICIONA A POSIO DOS BOTES add(botoes[0], BorderLayout.NORTH); add(botoes[1], BorderLayout.SOUTH); add(botoes[2], BorderLayout.EAST); add(botoes[3], BorderLayout.WEST); add(botoes[4], BorderLayout.CENTER); } @Override public void actionPerformed(ActionEvent evento) { //VERIFICA A ORIGEM DE EVENTO E O PAINEL DE CONTEDO DE LAYOUT CORRESPONDENTE for(JButton botao : botoes){ if(evento.getSource() == botao) botao.setVisible(false); else botao.setVisible(true); } layout.layoutContainer(getContentPane()); } } //OCULTA O BOTO QUANDO CLICA

Listagem 4: Classe testadora Border Layout


import javax.swing.JFrame; public class TestaBorderLayoutFrame { public static void main(String[] args) { BorderLayoutFrame border = new BorderLayoutFrame(); border.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); border.setSize(400,200); border.setVisible(true); } }

Grid Layout
um gerenciador de layout que divide o continer em uma grade de modo que os componentes podem ser colocados nas linhas e colunas. A classe GridLayout estende a classe Object e implementa a interface LayoutManager. Cada componente no GridLayout tem os mesmos tamanhos, onde podem ser inserida uma clula na parte superior esquerda da grade que prossegue da

5 of 9

02/10/2014 04:35 PM

Conhecendo Gerenciadores de Layout GUI do Java

http://www.devmedia.com.br/conhecendo-gerenc...

TECNOLOGIAS

REVISTAS

CURSOS

MVP

LOGIN

Listagem 5: Classe com as funes do GridLayout


import java.awt.Container; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; public class GridLayoutFrame extends JFrame implements ActionListener { private JButton[] botoes; private static final String[] nomes = {"um", "dois", "trs", "quatro", "cinco", "seis private boolean toggle = true; private Container container; private GridLayout gridLayout1; private GridLayout gridLayout2; public GridLayoutFrame() { super("Demo Grid Layout"); gridLayout1 = new GridLayout(2, 3, 5, 5); gridLayout2 = new GridLayout(3,2); container = getContentPane(); setLayout(gridLayout1); botoes = new JButton[nomes.length]; for(int count = 0; count < nomes.length; count++) { botoes[count] = new JButton(nomes[count]); botoes[count].addActionListener(this); add(botoes[count]); } } //TRATA EVENTOS DE BOTO ALTERNANDO ENTRE LAYOUTS public void actionPerformed(ActionEvent event) { if(toggle) container.setLayout(gridLayout2); else container.setLayout(gridLayout1); toggle = !toggle; container.validate(); } } //ALTERNA PARA O VALOR OPOSTO //REFAZ O LAYOUT DO LAYOUT //OUVINTE REGISTRADO //2 POR 3; LACUNAS DE 5 //3 POR 2; NENHUMA LACUNA

//OBTM O PAINEL DE CONTEDO

Listagem 6: Classe Testadora GridLayout


import javax.swing.JFrame;

6 of 9

02/10/2014 04:35 PM

Conhecendo Gerenciadores de Layout GUI do Java

http://www.devmedia.com.br/conhecendo-gerenc...

TECNOLOGIAS

REVISTAS

CURSOS

MVP

LOGIN

public static void main(String[] args) { GridLayoutFrame glf = new GridLayoutFrame(); glf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); glf.setSize(300,200); glf.setVisible(true); } }

Concluso
Quando se desenvolve em interface GUI, so usadas ferramentas de design como NetBeans ou Eclipse, mas o mais usado ainda o NetBeans para esse tipo de desenvolvimento, pois fornece um maior controle na posio dos elementos e dos tamanhos. Espero que tenham gostado e at a prxima! Meu Space: http://www.devmedia.com.br/ThiagoVaralloPalmeira

Thiago Vincius Varallo Palmeira


Formado em Anlise e Desenvolvimento de Sistemas e Ps-Graduando em Engenharia de Software. Possui conhecimento em HTML, JavaScript, CSS, JQuery, UML, PHP, MySql, Java, Flex (Java/PHP), C#, JSP, Servlets, Oracle ADF 11g, Oracle [...]

O que voc achou deste post?

Gostei (2)

(0)

Poste seu comentrio


Lys Marie Santana Dos Santos Silva Gostei bastante do artigo sobre os gerenciadores de layout do Java. Tinha bastante tempo que estudei esse assunto, e agora que retomei os estudos, ajudou bastante a relembrar os conceitos. [h +1 ano] - Responder

[autor] Thiago Vincius Varallo Palmeira Fico agradecido Lys, espero ter passado de forma correta a teoria e um pouca da prtica sobre esses gerenciadores. Mais artigos acessa o meu Space -

7 of 9

02/10/2014 04:35 PM

Conhecendo Gerenciadores de Layout GUI do Java

http://www.devmedia.com.br/conhecendo-gerenc...

TECNOLOGIAS
Grato [h +1 ano] - Responder

REVISTAS

CURSOS

MVP

LOGIN

Marcelo Nalon De Souza Lima Thiago, parabns pelo artigo. Simples e direto. Gostaria s de comentar algo estranho que percebi. Voc cria uma referncia para o container do JFrame mas no o usa. [h 28 dias] - Responder

[autor] Thiago Vincius Varallo Palmeira Opa Marcelo, realmente foi importado mas no utilizado acabou ficando um lixo no import. [h 28 dias] - Responder

Mais posts
Revista

Revista Java Magazine 124


Artigo

Hadoop MapReduce: crie um Programa MapReduce Base


Video aula

Servidor Tomcat: Instalando e Configurando - Curso de Java Online: JSF - Aula 48


Video aula

Jasper Reports iReport: Relatrios com sub relatrios - Curso de Java Online: JSF - Aula 47
Video aula

Jasper Reports: Criando relatrio com iReport e integrando ao JSF - Curso de Java Online: JSF - Aula 46
Revista

Revista Mobile Magazine 56


Artigo

8 of 9

02/10/2014 04:35 PM

Conhecendo Gerenciadores de Layout GUI do Java

http://www.devmedia.com.br/conhecendo-gerenc...

TECNOLOGIAS

REVISTAS

CURSOS

MVP

LOGIN

Artigo

Java EE 7: novidades da plataforma


Artigo

Apache TomEE: criando um MovieFun


Artigo

Android LifeCycle: ciclo de vida de uma aplicao Android


Listar mais contedo

9 of 9

02/10/2014 04:35 PM

Potrebbero piacerti anche