Swing e gerenciadores de layout

Este artigo destina-se a dar uma visão sobre o Swing e os gerenciadores de Layout (FlowLayout, BorderLayout e GridLayout). Para quem não sabe, Swing é uma extensão do Java que possui uma coleção de classes usadas para o desenvolvimento de aplicações gráficas.

[ Hits: 37.963 ]

Por: Perfil removido em 21/03/2005


Gerenciadores de Layout



Os gerenciadores de layout são utilizados para organizar os componentes GUI em um Container, para o propósito de apresentação.

FlowLayout é o gerenciador de layout mais básico, os componentes são adicionados da esquerda para a direita no Container, na ordem em que são adicionados até atingir a borda do Container, onde continuam na próxima linha. Esse Layout ainda permite aos componentes GUI serem alinhados à esquerda, centralizado e à direita. O FlowLayout é o padrão para java.awt.Applet, java.awt.Panel e javax.swing.JPanel. A classe FlowLayout herda da classe Object e implementa a interface LayoutManager.

Como exemplo temos abaixo a classe ShowFlowLayout, na qual são adicionados três botões.

//pacote necessário para utilizar a classe
//JButton
import javax.swing.*;

//pacote necessário para utilizar as classes
//FlowLayout, JFrame e Container
import java.awt.*;

public class ShowFlowLayout extends JFrame{
    
    //método construtor da classe ShowFlowLayout
    public ShowFlowLayout(){
        
        //chama o construtor da super classe JFrame,
        //e passa a String FlowLayout como parâmetro
        super("FlowLayout");
        
        //obtém o container
        Container c = getContentPane();
        
        //cria o objeto FlowLayout
        FlowLayout layout = new FlowLayout();
        //usa o método setAlignment da classe FlowLayout
        //e passa a constante center como parâmetro
        layout.setAlignment(FlowLayout.CENTER);
        //define o layout do container
        c.setLayout(layout);
        
        //método herdado de JFrame e utilizado para
        //fechar a aplicação com sucesso.
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        
        //cria os botões que serão adicionados ao container
        JButton esq = new JButton("esquerda");    
        JButton cen = new JButton("centro");
        JButton dir = new JButton("direita");
        
        //utiliza o método add herdado de Component,
        //para adicionar os botões(JComponent) ao container
        c.add(esq);
        c.add(cen);
        c.add(dir);
        
        //métodos herdados de JFrame para definir
        //o tamanho do JFrame e mostrar o JFrame.
        setSize(300, 75);
        setVisible(true);
        
    }    
    
    //método que os aplicativos java começam executando
    public static void main(String args[]){
        
        //chama o construtor da classe
        new ShowFlowLayout();
    }

}

BorderLayout é o gerenciador padrão para painéis de conteúdo JFrame e JApplet, organizando os componentes em cinco áreas: Norte, Sul, Leste, Oeste e Centro.

A classe BorderLayout herda de Object e implementa a interface LayoutManager2.

Os componentes colocados nas regiões Norte e Sul estendem-se horizontalmente por toda a extensão do Container e tem a mesma altura do componente mais alto colocados nessa região.

Os componentes colocados nas regiões Oeste e Leste estendem-se verticalmente entre as regiões Norte e Sul e tem a mesma largura do componente mais largo colocado nessas regiões.

O componente colocado no centro expande-se por toda região restante. Os componentes Oeste, Leste e Centro expandem-se para Norte e Sul se os componentes dessa área não existir. O componente do Centro estendem-se horizontalmente se os componentes Oeste e Leste não existirem, mas o Centro não será preenchido se o componente desta localidade não existir.

Como exemplo temos a baixo a classe ShowBorderLayout, na qual são adicionados cinco botões.

//pacote necessário para utilizar a classe
//JButton
import javax.swing.*;

//pacote necessário para utilizar as classes
//BorderLayout, JFrame e Container
import java.awt.*;

public class ShowBorderLayout extends JFrame{
    
    //método construtor da classe ShowBorderLayout                
    public ShowBorderLayout(){
        
        //chama o construtor da super classe JFrame,
        //e passa a String BorderLayout como parâmetro
        super("BorderLayout");
        
        //cria um objeto BorderLayout, e passa como parâmetro
        //o número de pixels do espaçamento horizontal entre
        //os componentes e o número de pixels do espaçamento
        //vertical entre os componentes
        BorderLayout layout = new BorderLayout(3, 3);                
        
        //obtém o container
        Container c = getContentPane();
        c.setLayout(layout);    
        
        //método herdado de JFrame e utilizado para
        //fechar a aplicação com sucesso.
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);        
        
        //cria os botões que serão adicionados ao container
        JButton norte = new JButton("norte");    
        JButton sul = new JButton("sul");
        JButton centro = new JButton("centro");
        JButton oeste = new JButton("oeste");
        JButton leste = new JButton("leste");
                
        //utiliza o método add herdado de Component,
        //para adicionar os botões(JComponent) ao container
        c.add(norte, BorderLayout.NORTH); //posição norte
        c.add(sul, BorderLayout.SOUTH); //sul
        c.add(centro, BorderLayout.CENTER); //centro
        c.add(oeste, BorderLayout.WEST); //oeste
        c.add(leste, BorderLayout.EAST); //leste
        
        //métodos herdados de JFrame para definir
        //o tamanho do JFrame e mostrar o JFrame.
        setSize(250, 175);
        setVisible(true);
        
    }    
    
    //método que os aplicativos java começam executando
    public static void main(String args[]){
        
        //chama o construtor da classe
        new ShowBorderLayout();
    }    

}

GridLayout é um gerenciador de layout que divide o container em uma grade com linhas e colunas, onde os componentes são colocados a partir da parte superior esquerda e assim sucessivamente, até completar a linha e para linha abaixo.

A classe GridLayout herda de Object e implementa a interfaceLayoutManager.

Como exemplo temos abaixo a classe ShowBorderLayout, na qual são adicionados seis botões.

//pacote necessário para utilizar a classe
//JButton
import javax.swing.*;
//pacote necessário para utilizar as classes
//GridLayout, JFrame e Container
import java.awt.*;

public class ShowGridLayout extends JFrame{
    
    //método construtor da classe ShowGridLayout                
    public ShowGridLayout(){
        
        //chama o construtor da super classe JFrame,
        //e passa a String GridLayout como parâmetro
        super("GridLayout");
        
        //cria um objeto GridLayout com 3 linhas,
        //2 colunas, 3 pixel de espaçamento horizontal
        //entre os componentes e 3 pixels de espaçamento
        //vertical entre os componentes
        GridLayout layout = new GridLayout(3, 2, 3, 3);                
        
        //obtém o container
        Container c = getContentPane();
        c.setLayout(layout);    
        
        //método herdado de JFrame e utilizado para
        //fechar a aplicação com sucesso.
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);        
        
        //cria os botões que serão adicionados ao container
        JButton um = new JButton("1");    
        JButton dois = new JButton("2");
        JButton tres = new JButton("3");
        JButton quatro = new JButton("4");
        JButton cinco = new JButton("5");
        JButton seis = new JButton("6");
                
        //utiliza o método add herdado de Component,
        //para adicionar os botões(JComponent) ao container
        c.add(um);
        c.add(dois);
        c.add(tres);
        c.add(quatro);
        c.add(cinco);
        c.add(seis);
        
        //métodos herdados de JFrame para definir
        //o tamanho do JFrame e mostrar o JFrame.
        setSize(250, 175);
        setVisible(true);
        
    }    
    
    //método que os aplicativos java começam executando
    public static void main(String args[]){
        
        //chama o construtor da classe
        new ShowGridLayout();
    }    

}
Página anterior    

Páginas do artigo
   1. Visão do Swing
   2. Gerenciadores de Layout
Outros artigos deste autor

Um tour pelos visualizadores de imagem para Linux

Configurando os escâneres HP 2300C/2400C no Linux

Usando joysticks em jogos que não possuem opção para utilizá-lo no Linux

Conexão do Vindula com o Active Directory Server 2008 R2

Incrementando as funções do KDE com "servicemenus"

Leitura recomendada

Programação orientada a objetos e o Java (Parte 6)

Programe em JAVA - Instalação, configuração e exemplos

Streams, lendo do teclado e escrevendo em arquivos com Java

Instalação e Configuração do JDK 7

Introdução ao Java - Hello World

  
Comentários
[1] Comentário enviado por BIRILO em 22/03/2005 - 08:23h

Cara... tu não tem noção como eu tava me quebrando com essa história de Layouts em JAVA com VisualEditor do Eclipse....

Hoje a noite vou fazer uns testes....Vlws

[2] Comentário enviado por leysen em 22/03/2005 - 13:20h

é através dessa biblioteca que a sun desenvolveu objetos em 3D no desktop ?


[3] Comentário enviado por kite01 em 23/03/2005 - 02:03h

nao pra isso eles usaram o java 3d,

[4] Comentário enviado por henbran em 19/10/2006 - 23:48h

Oi
Onde trabalho preciso de um form p/ verificar:
Nºs de ordem da consulta médica (em um arquivo texto ou xls);
data da consulta; (ídem: em um arquivo texto ou xls)
reincidência do mesmo paciente no mesmo mês em um mesmo tipo de consulta;
Quantidade total das consultas;
código do paciente (em banco de dados MySql já existente);

O que eu não sei é qual biblioteca e comandos uso para formulários, textbox, checkbox, combobox, etc... Preciso de algum exemplo.

Por favor, quem puder, me ajudem.


Contribuir com comentário