Como posso fazer

Olá galera estou precisando muito de organizar os botões de uma calculadora que eu estou fazendo já tentei de tudo já li a API do java mas não estou conseguindo, quem souber por favor implemente o código ou me mostre como faz não me passa link de tutorias pois já estou cansado de ler e não consegui enteder, me falaram que posso organizar com tal de GridLayout
mas como eu faço e um tal de setBounds(int x, int y, int width, int height) e tb
zero.setPreferredSize( new Dimension(250,250) ); ambos servem para mesma coisa eu não tenho a minha idéia de como utiliza…! por favor quem souber me explique pois é disso que estou prescisando irei deixar o códiho para que vocês possam verificar…! me expliquem de uma forma que eu possa adaptar em minha calculadora



import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
import javax.swing.JLabel;
import javax.swing.Icon;
import javax.swing.SwingConstants;
import javax.swing.ImageIcon;
import java.awt.GridBagLayout;


public class Calculadora extends JFrame
{
   CalculadoraPilha p = new CalculadoraPilha();
   private JLabel label2;
   private JTextField texto;
   private JButton zero;
   private JButton um;
   private JButton dois;
   private JButton tres;
   private JButton quatro;
   private JButton cinco;
   private JButton seis;
   private JButton sete;
   private JButton oito;
   private JButton nove;
   private JButton somar;
   private JButton dividir;
   private JButton multiplicar;
   private JButton subtrair;
   private JButton limpar;
   public String saida="";
   public Calculadora()
   
  
   {
	   
	   
      super("Calculadora");
       
      setLayout( new FlowLayout());
      
      setBounds( 2,  3,  4, 4); 
      texto = new JTextField( 10 );
      texto.setEditable(false);
      add(texto);
      
   
      
      
   
     
      //**************
	  
      zero=new JButton("0");
     
      add(zero);
     
      um=new JButton("1");
      add(um);
     
      dois=new JButton("2");
      add(dois);
     
      tres=new JButton("3");
      add(tres);
     
      quatro=new JButton("4");
      add(quatro);
     
      cinco=new JButton("5");
      add(cinco);
     
      seis=new JButton("6");
      add(seis);
     
      sete=new JButton("7");
      add(sete);
     
      oito=new JButton("8");
      add(oito);
     
      nove=new JButton("9");
      add(nove);
      
      limpar=new JButton("CE");
      add(limpar);
      
      somar=new JButton("+");
      add(somar);
      
      dividir=new JButton("/");
      add(dividir);
      
      multiplicar=new JButton("*");
      add(multiplicar);
      
      subtrair=new JButton("-");
      add(subtrair);
      
      
     
      Botao acao = new Botao();
      zero.addActionListener(acao);
      um.addActionListener(acao);
      dois.addActionListener(acao);
      tres.addActionListener(acao);
      quatro.addActionListener(acao);
      cinco.addActionListener(acao);
      seis.addActionListener(acao);
      sete.addActionListener(acao);
      oito.addActionListener(acao);
      nove.addActionListener(acao);
      limpar.addActionListener(acao);
      somar.addActionListener(acao);
      dividir.addActionListener(acao);
      multiplicar.addActionListener(acao);
      subtrair.addActionListener(acao);
      
     
   }//fim do método construtor
   
   private class Botao implements ActionListener
   {
      public void  actionPerformed(ActionEvent event)
      {
    	  
    	  
         if (event.getSource() == zero ) 
          {
        	 p.empilhar(0);
        	 saida+="0";
        	 texto.setText( saida );
          }
         
         if (event.getSource() == um ) 
          {
        	 p.empilhar(1);
        	 saida+="1";
        	 texto.setText(saida );
          }
         
         if (event.getSource() == dois ) 
         {
        	 saida+="2";
        	 texto.setText( saida );
         }

         
         if (event.getSource() == tres ) 
         {
        	 saida+="3";
        	 texto.setText( saida );
         }

         
         if (event.getSource() == quatro ) 
         {
        	 saida+="4";
        	 texto.setText( saida );
         }

         
         if (event.getSource() == cinco ) 
         {
        	 saida+="5";
        	 texto.setText( saida );
         }

         
         if (event.getSource() == seis ) 
         {
        	 saida+="6";
        	 texto.setText( saida );
         }
         
         if (event.getSource() == sete ) 
         {
        	 saida+="7";
        	 saida+="2";
        	 texto.setText( saida );
         }
         
         if (event.getSource() == oito ) 
         {
        	 saida+="8";
        	 texto.setText( saida );
         }
         
         if (event.getSource() == nove ) 
         {
        	 saida+="9";
        	 texto.setText( saida );
         }
         
         if (event.getSource() == limpar ) 
         {
        	 saida="";
        	 texto.setText( saida );
         }
         
         if (event.getSource() == somar ) 
         {
        	 saida="";
        	 texto.setText( saida );
         }

      }
   }
   

classe main

 import javax.swing.JFrame;


public class Calculadoramain 
  {

	
	public static void main(String[] args) 
	{
		
		Calculadora chama = new Calculadora();
		chama.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		chama.setSize(250,250);
		chama.setVisible(true);
		

		
		

	}

}

O netbeans faz isso ficar muito fácil…
Mas mais fácil ainda que o editor gráfico dele é o Form layout do JGoodies, muito bom mesmo. Com ele tu organiza os compenentes em uma grade, podendo juntar células, alinhar e tal.

JGoodies Form:
http://www.jgoodies.com/freeware/forms/index.html