import java.awt.*;
import javax.swing.*;

public class ExBorderLayout extends JFrame {

  public ExBorderLayout()
    {
    super("Exemplo BorderLayout");
    setDefaultCloseOperation(EXIT_ON_CLOSE);
    JLabel jLabel1 = new JLabel("Nome: ");
    JTextField tFNome = new JTextField(15);
    JLabel jLabel2 = new JLabel("Endereço: ");
    JTextField tFEndereco = new JTextField(20);
    JLabel jLabel3 = new JLabel("Cidade: ");
    JTextField tFCidade = new JTextField(15);
    JLabel jLabel4 = new JLabel("Estado: ");
    JTextField tFEstado = new JTextField(2);
    JButton btOk = new JButton("OK");
    JButton btCancelar = new JButton("Cancelar");
    JPanel jPanel1 = new JPanel();
    JPanel jPanel2 = new JPanel();
    JPanel jPanel3 = new JPanel();

    Container janela;
    janela = getContentPane();
    janela.setLayout(new BorderLayout()); // A janela utiliza layout de bordas

    jPanel1.setLayout(new GridLayout(4,1)); // o 1º painel utiliza grid de 4 linhas
    jPanel2.setLayout(new GridLayout(4,1)); // o 2º painel utiliza grid de 4 linhas
    jPanel3.setLayout(new FlowLayout());    // o 3º painel utiliza flowlayout

    jPanel1.add(jLabel1); // adiciona componentes no 1º painel
    jPanel1.add(jLabel2); 
    jPanel1.add(jLabel3);
    jPanel1.add(jLabel4);

    jPanel2.add(tFNome);   // adiciona componentes no 2º painel
    jPanel2.add(tFEndereco);    
    jPanel2.add(tFCidade);
    jPanel2.add(tFEstado);

    jPanel3.add(btOk);      // adiciona componentes no 3º painel
    jPanel3.add(btCancelar);

    janela.add(jPanel1,  BorderLayout.WEST);  // adicional o painel 1 à esquerda na janela
    janela.add(jPanel2, BorderLayout.CENTER); // adicional o painel 2 no centro da janela
    janela.add(jPanel3,  BorderLayout.SOUTH); // adicional o painel 3 abaixo na janela

    pack();  // pode ser usado ao inves de setSize(400, 250);
    }

  public static void main(String[] args) {
    ExBorderLayout exBorderLayout = new ExBorderLayout();
    exBorderLayout.show();
  }

}