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: 36.776 ]

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

Instalação de um servidor de mensagens instantâneas Openfire na sua rede com clientes Microsoft Windows e cliente Jabber Exodus

Variety - Instalação e configuração

Configurando um servidor DNS e DHCP na rede

Os Mistérios da Fonte Wingdings do Windows

Como fazer seu programa Kylix chamar uma aplicação externa

Leitura recomendada

Gerando arquivos JAR com o Eclipse

Programação orientada a objetos e o Java (parte 1)

Montando um ambiente utilizando Tomcat + Java + MySQL (Debian)

Programação orientada a objetos e o Java (parte 5)

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

  
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




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts