Transpor de setBounds para GridBag

Tenho dois códigos,um setando o layout como null, e outro como GridBagLayout,com o layout null, eu
consigo colocar os componentes a onde eu quero, só que com o GridBagLayout não,eu tentei começar o código com o Grid,
eu queria que alguém modificasse o código com o GridBagLayout para deixar parecido com o layout null,
tipo,com aquele espaçamento que tem entre os JTextFields etc…,pois com isso eu entenderia direito como se usa o Grid!
Valeu desde já!

Com setBounds:

[code]import javax.swing.;
import java.awt.
;
import java.awt.event.*;

public class Usuario extends JFrame{
JTextField nome,cpf,rg,
JLabel lnome,lcpf,lrg,

private Container c;

  public Usuario()
  {
     super("Cadastro de Funcionário");

     c = getContentPane();

     c.setLayout(null);

     getContentPane().setBackground( new Color(220,220,180));

     //Constroi campo de texto com tamanho padrao
     JTextField nome = new JTextField ( 60 );
     JTextField cpf = new JTextField(12);
     JTextField rg = new JTextField(9);
     // Aqui são os rótulos
     JLabel lnome = new JLabel("Nome");
     lnome.setForeground(Color.black);
     lnome.setFont( new Font("",Font.BOLD,12));
     JLabel lcpf = new JLabel("CPF");
     lcpf.setForeground(Color.black);
     lcpf.setFont( new Font("",Font.BOLD,12));
     JLabel lrg = new JLabel("RG");
     lrg.setForeground(Color.black);
     lrg.setFont( new Font("",Font.BOLD,12));

     setSize(600,620);
     setVisible(true);
     setLocation(200,50);

     c.add(nome);nome.setBounds(150,40,250,20);
     c.add(lnome);lnome.setBounds(45,40,250,20);
     c.add(cpf);cpf.setBounds(150,70,110,20);
       c.add(lcpf);lcpf.setBounds(45,70,250,20);
     c.add(rg);rg.setBounds(320,70,120,20);
       c.add(lrg);lrg.setBounds(285,70,250,20);
  }
   public static void main ( String args [] )
 {
  JFrame Janela = new Usuario();
  Janela.setVisible(true);// Torna o painel visivel

  //Comandos para fechamento da aplicação
  WindowListener x = new WindowAdapter()
  {
     public void windowClosing(WindowEvent e)
     {
        System.exit(0);
     }
  };
  Janela.addWindowListener(x);
  }

}[/code]

Com GridBagLayout para modificarem:

[code]import javax.swing.;
import java.awt.
;
import java.awt.event.*;

public class Usuario extends JFrame{
private JTextField nome,cpf,rg,
private JLabel lnome,lcpf,lrg,

private Container c;
private GridBagLayout layout;
private GridBagConstraints constraints;

  public Usuario()
  {
     super("Cadastro de Funcionário");

     c = getContentPane();
     layout = new GridBagLayout();
     c.setLayout(layout);
     getContentPane().setBackground( new Color(220,220,180));
     /* inicializa as restrições do gridbag */
     constraints = new GridBagConstraints();

     //Constroi campo de texto com tamanho padrao
     JTextField nome = new JTextField (" 60                          ");
     JTextField cpf = new JTextField("12                  ");
     JTextField rg = new JTextField("9                     ");
     // Aqui são os rótulos
     JLabel lnome = new JLabel("Nome");
     lnome.setForeground(Color.black);
     lnome.setFont( new Font("",Font.BOLD,12));
     JLabel lcpf = new JLabel("CPF");
     lcpf.setForeground(Color.black);
     lcpf.setFont( new Font("",Font.BOLD,12));

     JLabel lrg = new JLabel("RG");
     lrg.setForeground(Color.black);
     lrg.setFont( new Font("",Font.BOLD,12));
     setSize(600,620);
     setVisible(true);
     setLocation(200,50);

     constraints.weightx=0;
     constraints.weighty=0;
     addComponent( nome, 1, 2, 1, 1 );
     addComponent( lnome, 1, 1, 1, 1 );
     addComponent( cpf, 2, 2, 1, 1 );
       addComponent( lcpf, 2, 1, 1, 1 );
     addComponent( rg, 2, 4, 1, 1 );
       addComponent( lrg, 2, 3, 1, 1 );

  }
   private void addComponent( Component component,int row,int column,
    int width, int height)
    {
    constraints.gridx = column;
    constraints.gridy = row;
    constraints.gridwidth = width;
    constraints.gridheight = height;

    layout.setConstraints( component,constraints);
    c.add( component );
    }

   public static void main ( String args [] )
 {
  JFrame Janela = new Usuario();
  Janela.setVisible(true);// Torna o painel visivel

  //Comandos para fechamento da aplicação
  WindowListener x = new WindowAdapter()
  {
     public void windowClosing(WindowEvent e)
     {
        System.exit(0);
     }
  };
  Janela.addWindowListener(x);
  }

}[/code]