비슷한가요....역시 코딩보다 디자인이 너무 힘드네요. 하~!

WindowBuilder로는 뭐랄까.....대략 짜고나면 코드가 뒤죽박죽이라 그냥 코딩으로 레이아웃 짰습니다.


   


메뉴바에 단축키도 다 설정을 해놨습니다.


import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.GridLayout;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.KeyStroke;

import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.InputEvent;


@SuppressWarnings("serial") // Warnning 무시
public class Calculator extends JFrame implements ActionListener {
	JPanel jpButton, jpResult; // 패널 초기화
	JMenuBar jmb; // 메뉴바 초기화
	JMenu jmEdit, jmHelp; // 메뉴 초기화
	JMenuItem mCopy, mPaste, mHelp, mInfo; // 메뉴 아이템 초기화
	JLabel jlbResult1, jlbResult2; // 레이블 초기화
	JButton[] jbButton = null; // 버튼배열 초기화
	String[] numStr = { "←", "CE", "C", "/",
			"7", "8", "9", "*",
			"4", "5", "6", "-",
			"1", "2", "3", "+",
			"0", "00", ".", "=" }; // 버튼에 들어갈 값

	public Calculator(){
		super("계산기 by 세이나린"); // 타이틀 바
		getContentPane().setLayout(new BorderLayout()); // 전체 레이아웃을 BorderLayout

		/** 메뉴바 시작*/
		jmb = new JMenuBar();

		jmEdit = new JMenu("편집(E)");
		jmHelp = new JMenu("도움말(H)");

		mCopy = new JMenuItem("복사");
		mPaste = new JMenuItem("붙여넣기");
		mHelp = new JMenuItem("도움말 보기");
		mInfo = new JMenuItem("계산기 정보");

		jmEdit.add(mCopy); // jmEdit라는 메뉴에 mCopy라는 메뉴아이템 추가
		jmEdit.add(mPaste); // jmEdit라는 메뉴에 mPaste라는 메뉴아이템 추가
		jmHelp.add(mHelp); // jmHelp라는 메뉴에 mHelp라는 메뉴아이템 추가
		jmHelp.add(mInfo); // jmHelp라는 메뉴에 mInfo라는 메뉴아이템 추가

		jmb.add(jmEdit); // jmb라는 메뉴바에 jmEdit라는 메뉴 추가
		jmb.add(jmHelp); // jmb라는 메뉴바에 jmHelp라는 메뉴 추가

		setJMenuBar(jmb); // jmb메뉴바 추가
		/** 메뉴바 끝 */		

		/** 레이블 시작 */
		jpResult = new JPanel(new GridLayout(2,1));
                // jpResult라는 패널에 GrideLayot을 적용, 2 x 1
		jpResult.setBackground(Color.WHITE); // jpResult라는 패널에 흰색 배경적용 
		jlbResult1 = new JLabel("", JLabel.RIGHT); 
                // jlbResult1라는 값 없는 레이블, 우측정렬
		jlbResult2 = new JLabel("0", JLabel.RIGHT); 
                // jlbResult2라는 기본값 0인 레이블, 우측정렬
		jlbResult2.setFont(new Font("굴림", Font.BOLD, 20)); 
                // jlbResult2 레이블에 폰트는 굴림, 진하게, 크게20 적용

		jpResult.add(jlbResult1); // jpResult 패널에 jlbResult1 레이블 추가
		jpResult.add(jlbResult2); // jpResult 패널에 jlbResult2 레이블 추가
		/** 레이블 끝 */

		/** 버튼 시작 */
		jpButton = new JPanel(new GridLayout(5, 4, 2, 2)); 
                // jpButton라는 패널, GridLayout적용, 5 x 4, 간격은 가로세로 2씩
		jpButton.setBackground(Color.WHITE); // jpButton 패널 배경은 흰색
		jbButton = new JButton[numStr.length]; // jbButton 버튼 배열 초기화

		// jbButton에 표기할 값들 적용
		for(int i=0; i<numStr.length; i++) {
			jbButton[i] = new JButton(numStr[i]);
			jbButton[i].setFont(new Font("굴림", Font.BOLD, 20));
			jpButton.add(jbButton[i]);
			jbButton[i].addActionListener(this);
		}

		/** 버튼 색 시작 */
		for(int j=0; j<numStr.length; j++) {
			if(j < 3) {
				jbButton[j].setForeground(Color.RED);
			}else if(j==3 || j==7 || j==11 || j==15 || j==19) {
				jbButton[j].setForeground(Color.BLUE);
			}
		}
		jbButton[0].setForeground(Color.RED);
		/** 버튼 색 끝 */

		/** 버튼 단축키 시작 */
		jmEdit.setMnemonic('E');
		jmHelp.setMnemonic('H');

		mCopy.setAccelerator(KeyStroke.getKeyStroke('C', InputEvent.CTRL_MASK));
		mPaste.setAccelerator(KeyStroke.getKeyStroke('V', InputEvent.CTRL_MASK));
		mHelp.setAccelerator(KeyStroke.getKeyStroke('H', InputEvent.CTRL_MASK));
		mInfo.setAccelerator(KeyStroke.getKeyStroke('I', InputEvent.CTRL_MASK));
		/** 버튼 단축키 끝 */

		mCopy.addActionListener(this);
		mPaste.addActionListener(this);
		mHelp.addActionListener(this);
		mInfo.addActionListener(this);
		/** 버튼 끝 */


		getContentPane().add("North", jpResult);
		getContentPane().add("Center", jpButton);
		setSize(300, 400);
		getContentPane().setBackground(Color.WHITE);
		setResizable(false);
		setVisible(true);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	}

	/** 버튼 이벤트 시작 */
	@Override
	public void actionPerformed(ActionEvent e) {
		// TODO Auto-generated method stub

	}
	/** 버튼 이벤트 끝 */

	public static void main(String[] args) {
		new Calculator();
	}
 

}




Posted by 세이나린
,