Java BorderLayout
Autor: Adriano Fialho | Publicado: 2013-04-19T06:41:00-07:00


Layout Manager. Parte BorderLayout.
O gerenciador de layout BorderLayout é o gerenciador 
                  padrão para as classes JFrame, JWindow, JDialog, JInternalFrame 
                  e JApplet. Este gerenciador divide um container em cinco regiões, 
                  a saber: centro (CENTER), norte (NORTH), sul (SOUTH), leste 
                  (EAST) e oeste (WEST).


CENTER:
 Posiciona o componente na área central do container. O componente é  
redimensionado para ocupar toda a área livre. Se nenhum posicionamento 
for especificado, este é adotado como padrão;
NORTH:
 Posiciona o componente na área superior (norte) do container. A altura 
do componente é respeitada, mas a largura é redimensionada para  ocupar 
todo o espaço horizontal;
SOUTH:  Posiciona o componente na área inferior (sul) do container. O redimensionamento é semelhante ao componente da posição NORTH;
WEST:
 Posiciona o componente na parte esquerda (oeste) do container. Para 
este caso a largura do componente é respeitada, porém a altura é 
redimensionada para ocupar todo o espaço vertical;
EAST:
 Posiciona o componente na parte direita (leste) do container. O 
redimensionamento ocorre de forma semelhante ao componente da  posição 
WEST.

Obs.: As constantes apresentadas definem 
posicionamento absoluto. Mas também existem algumas constantes para 
posicionamento relativo à orientação dos componentes, são eles PAGE_START, PAGE_END, LINE_START e LINE_END.
Botando a teoria em prática, vamos criar um painel com BorderLayout e inserir um componente na posição central:






package devsv.layout.border;



import java.awt.BorderLayout;

import java.awt.Dimension;



import javax.swing.JButton;

import javax.swing.JPanel;



public class BorderLayoutPanel extends JPanel {

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;BorderLayout layout;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;public BorderLayoutPanel() {

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;initialize();

&nbsp;&nbsp;&nbsp;&nbsp;}

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;private void initialize() {

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;setPreferredSize(new Dimension(400, 300));

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;layout = new BorderLayout();

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;setLayout(layout);

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;add(new JButton("Center"), BorderLayout.CENTER);

&nbsp;&nbsp;&nbsp;&nbsp;}

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

}







Para exibir este painel, vamos criar uma janela:





package devsv.layout.test;



import java.awt.EventQueue;



import javax.swing.JFrame;



import devsv.layout.border.BorderLayoutPanel;



public class BorderLayoutTest extends JFrame {



&nbsp;&nbsp;&nbsp;&nbsp;public BorderLayoutTest() {

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;super("BorderLayoutTest");

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;setDefaultCloseOperation(EXIT_ON_CLOSE);

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;setContentPane(new BorderLayoutPanel());

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pack();

&nbsp;&nbsp;&nbsp;&nbsp;}



&nbsp;&nbsp;&nbsp;&nbsp;public static void main(String[] args) {

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EventQueue.invokeLater(new Runnable() {

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@Override

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public void run() {

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;new BorderLayoutTest().setVisible(true);

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});

&nbsp;&nbsp;&nbsp;&nbsp;}



}





&nbsp;

Como podemos ver, o botão adicionado na posição CENTER se 
redimensionou, passando a ocupar toda a área disponível na tela. 
Continuando o exemplo, adicionaremos dois botões nas laterais do painel,
 conforme as linhas de código em destaque:





private void initialize() {

&nbsp;&nbsp;&nbsp;&nbsp;setPreferredSize(new Dimension(400, 300));

&nbsp;&nbsp;&nbsp;&nbsp;layout = new BorderLayout();

&nbsp;&nbsp;&nbsp;&nbsp;setLayout(layout);

&nbsp;&nbsp;&nbsp;&nbsp;add(new JButton("Center"), BorderLayout.CENTER);

&nbsp;&nbsp;&nbsp;&nbsp;add(new JButton("West"), BorderLayout.WEST);

&nbsp;&nbsp;&nbsp;&nbsp;add(new JButton("East"), BorderLayout.EAST);

}







Desta vez, os botões do oeste e do leste se redimensionaram apenas 
verticalmente, já o botão central continua ocupando todo o espaço livre.
 Para completar, vamos posicionar botões ao norte e ao sul do painel:





private void initialize() {

&nbsp;&nbsp;&nbsp;&nbsp;setPreferredSize(new Dimension(400, 300));

&nbsp;&nbsp;&nbsp;&nbsp;layout = new BorderLayout();

&nbsp;&nbsp;&nbsp;&nbsp;setLayout(layout);

&nbsp;&nbsp;&nbsp;&nbsp;add(new JButton("Center"), BorderLayout.CENTER);

&nbsp;&nbsp;&nbsp;&nbsp;add(new JButton("West"), BorderLayout.WEST);

&nbsp;&nbsp;&nbsp;&nbsp;add(new JButton("East"), BorderLayout.EAST);

&nbsp;&nbsp;&nbsp;&nbsp;add(new JButton("North"), BorderLayout.NORTH);

&nbsp;&nbsp;&nbsp;&nbsp;add(new JButton("South"), BorderLayout.SOUTH);

}







Neste exemplo temos componentes adicionados em todas as posições do 
layout. Os botões do norte e do sul se redimensionaram horizontalmente, 
os do oeste e do leste cresceram verticalmente e, por fim, o do centro 
preencheu o restante do espaço.
Agora que já verificamos como ficam dispostos os componentes, o 
último retoque que faremos será definir o espaçamento entre os 
componentes (hgap e vgap). A linha em destaque mostra os valores sendo 
passados pelo construtor:





private void initialize() {

&nbsp;&nbsp;&nbsp;&nbsp;setPreferredSize(new Dimension(400, 300));

&nbsp;&nbsp;&nbsp;&nbsp;layout = new BorderLayout(20, 20);

&nbsp;&nbsp;&nbsp;&nbsp;setLayout(layout);


&nbsp;&nbsp;&nbsp;&nbsp;. . .







Assim como especificado, foi criado um espaçamento entre os componentes adicionados.

Referencias:
http://devsv.wordpress.com
http://www.arquivodecodigos.net