Alguém sabe..?

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);
		

		
		

	}

}

Olá, você poderá fazer seu projeto em uma IDE que tem suporte a swing, em que você arrasta o botão ou caixa de texto e etc. e coloca no seu JFrame, ou pode redimensionar pela mão mesmo, foi assim que fiz…

Exemplo:

package trabalho;

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

/**
 *
 * @author chris
 */
public class Cad_Pagar extends JFrame{
    private JLabel lbl1, lbl2, lbl3, lbl4, lbl5, lbl6, lbl7,lbl8,lbl9,lbl10,lbl11, lbl12, lblIcone;
    private JTextField txt1, txt2, txt3, txt4, txt5, txt6;
    private JButton btn1, btn2;
    private JComboBox cbx, cbx2;
    private JRadioButton radio1,radio2,radio3; 
    private ButtonGroup radiogroup;
    private String tipoconta[] = {"", "Fixa", "Fornecedores"};
    private String tipopagamento[] = {"", "Banco", "Cheque"};
        
    /** Creates a new instance of Cad_Pagar */
    public Cad_Pagar() {
        
        super("Cadastro Contas a Pagar");
        
        Container container = getContentPane();
        container.setLayout(null);
        
        Icon icon1 = new ImageIcon("D:/Java/logo2.jpg");
        lblIcone = new JLabel(icon1);
        lblIcone.setBounds(10,10,100,42);
        container.add(lblIcone);
        
        lbl1 = new JLabel("Cadastro de Contas a Pagar");
        lbl1.setBounds(120,30,200,15);
        container.add(lbl1);
        
        lbl2 = new JLabel("Documento:");
        lbl2.setBounds(10,63,90,15);
        container.add(lbl2);

        txt1 = new JTextField(10);
        txt1.setBounds(95,63,300,17);
        container.add(txt1);
  
        lbl3 = new JLabel("Data:");
        lbl3.setBounds(10,83,50,17);
        container.add(lbl3);
        
        txt2 = new JTextField(150);
        txt2.setBounds(50,83,83,17);
        container.add(txt2);
        
        lbl5 = new JLabel("Despesa Referente à:");
        lbl5.setBounds(10,123,140,15);
        container.add(lbl5);
        
        txt3 = new JTextField(150);
        txt3.setBounds(145,123,250,17);
        container.add(txt3);
        
        lbl6 = new JLabel("Código:");
        lbl6.setBounds(10,143,70,15);
        container.add(lbl6);
        
        txt4 = new JTextField(150);
        txt4.setBounds(70,143,110,17);
        container.add(txt4);
        
        lbl12 = new JLabel("Credor:");
        lbl12.setBounds(185,143,50,15);
        container.add(lbl12);
        
        txt5 = new JTextField(150);
        txt5.setBounds(240,143,155,17);
        container.add(txt5);
        
        lbl7 = new JLabel("Valor R$:");
        lbl7.setBounds(10,163,70,15);
        container.add(lbl7);
        
        txt5 = new JTextField(150);
        txt5.setBounds(70,163,100,17);
        container.add(txt5);
        
        lbl8 = new JLabel("Data de Vencimento:");
        lbl8.setBounds(180,163,150,15);
        container.add(lbl8);
        
        txt6 = new JTextField(150);
        txt6.setBounds(310,163,85,17);
        container.add(txt6);
        
        lbl9 = new JLabel("Tipo de conta:");
        lbl9.setBounds(10,183,110,15);
        container.add(lbl9);
        
        cbx = new JComboBox(tipoconta);
        cbx.setMaximumRowCount(3);
        cbx.setBounds(115,183,150, 17);
        container.add(cbx);
       
        lbl10 = new JLabel("Situação:");
        lbl10.setBounds(10,203,70,15);
        container.add(lbl10);
                
        radio1 = new JRadioButton("Pago");
        radio2 = new JRadioButton("A Pagar"); 
        radiogroup = new ButtonGroup();
        radiogroup.add(radio1);
        radiogroup.add(radio2);
 
        radio1.setBounds(110,203,75,17);
        radio2.setBounds(185,203,75,17);
        container.add(radio1);
        container.add(radio2);
        
        lbl11 = new JLabel("Tipo de Pagamento:");
        lbl11.setBounds(10,223,130,15);
        container.add(lbl11);
        
        cbx2 = new JComboBox(tipopagamento);
        cbx2.setMaximumRowCount(3);
        cbx2.setBounds(140,223,125, 17);
        container.add(cbx2);
  
        btn1 = new JButton("Cadastrar");
        btn1.setBounds(90,253,115,25);
        container.add(btn1);
        
        btn2 = new JButton("Cancelar");
        btn2.setBounds(215,253,115,25);        
        container.add(btn2);
        
        setSize(420,320);
        setVisible(true);
        setResizable(false);
        setLocationRelativeTo(null);
    }
    
    public static void main(String args[]){
        
        Cad_Pagar application = new Cad_Pagar();
        
        application.setDefaultCloseOperation(
                JFrame.EXIT_ON_CLOSE);
    }
    
}