Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
http://www.devmedia.com.br/conhecendo-gerenc...
TECNOLOGIAS
REVISTAS
CURSOS
MVP
LOGIN
post favorito
comentrios
Conhece a assinatura MVP?
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
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
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
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
3 of 9
02/10/2014 04:35 PM
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
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
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
http://www.devmedia.com.br/conhecendo-gerenc...
TECNOLOGIAS
REVISTAS
CURSOS
MVP
LOGIN
6 of 9
02/10/2014 04:35 PM
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
Gostei (2)
(0)
[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
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
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
8 of 9
02/10/2014 04:35 PM
http://www.devmedia.com.br/conhecendo-gerenc...
TECNOLOGIAS
REVISTAS
CURSOS
MVP
LOGIN
Artigo
9 of 9
02/10/2014 04:35 PM