방법 1.
import java.awt.Color;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class Calculator extends JFrame {
	JPanel jp1 = new JPanel();
	JPanel jp2 = new JPanel();
		JButton but1 = new JButton("Clear");
		JButton but2 = new JButton("BS");
		JButton but3 = new JButton("End");	
		JButton but4 = new JButton(" ");
	JPanel jp3 = new JPanel();
		JButton but5 = new JButton(" 7 ");
		JButton but6 = new JButton(" 8 ");
		JButton but7 = new JButton(" 9 ");
		JButton but8 = new JButton(" + ");
	JPanel jp4 = new JPanel();
		JButton but9 = new JButton(" 4 ");
		JButton but10 = new JButton(" 5 ");
		JButton but11 = new JButton(" 6 ");
		JButton but12 = new JButton(" - ");
	JPanel jp5 = new JPanel();
		JButton but13 = new JButton(" 1 ");
		JButton but14 = new JButton(" 2 ");
		JButton but15 = new JButton(" 3 ");
		JButton but16 = new JButton(" * ");
	JPanel jp6 = new JPanel();
		JButton but17 = new JButton(" 0 ");
		JButton but18 = new JButton(" . ");
		JButton but19 = new JButton(" = ");
		JButton but20 = new JButton(" / ");
	
	JLabel jl = new JLabel("0.0");
	
	public Calculator() {
		super("계산기");
		super.setLayout(new GridLayout(6, 4, 0, 0));
		setSize(250, 300);
		setVisible(true);
		// TODO Auto-generated constructor stub
		
		jp1.add(jl);
		super.add(jp1);
		
		jp2.add(but1); jp2.add(but2); jp2.add(but3); jp2.add(but4);
		super.add(jp2);
		
		jp3.add(but5); jp3.add(but6); jp3.add(but7); jp3.add(but8);
		super.add(jp3);
		
		jp4.add(but9); jp4.add(but10); jp4.add(but11); jp4.add(but12);
		super.add(jp4);
		
		jp5.add(but13); jp5.add(but14); jp5.add(but15); jp5.add(but16);
		super.add(jp5);
		
		jp6.add(but17); jp6.add(but18); jp6.add(but19); jp6.add(but20);
		super.add(jp6);
		
	}
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Calculator cal = new Calculator();
	}
}
=====================================================================
방법 2.
import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class CalculatorT implements ActionListener {
	JFrame jf = new JFrame("계산기");
	
	JLabel jl = new JLabel("0.0", JLabel.RIGHT);
	
	//버튼틀
	JPanel jp = new JPanel();
	String butValue[] = {"Clear","BackSpace","End","","7","8","9","+","4","5","6","-",
			"1","2","3","*","0",".","=","/"};
	JButton jb[] = new JButton[20];
	
	public CalculatorT() {
		//라벨 추가
		jf.add(jl, "North");	//BorderLayout.NORTH
		//버튼
		jp.setLayout(new GridLayout(5, 4));
		
		for(int i=0; i<butValue.length; i++){	//버튼 생성, 패널 추가
			jb[i] = new JButton(butValue[i]);
			jp.add(jb[i]);	//패널추가
			jb[i].addActionListener(this);	//이벤트 등록
		}
		
		jf.add(jp, BorderLayout.CENTER);
		
		jf.setSize(400, 400);
		jf.setVisible(true);
		
	}
	//오버라이딩
	public void actionPerformed(ActionEvent ae){}
	public static void main(String[] args) {
		new CalculatorT();
	}
}