본문 바로가기

혼자해보는 공부

Java 계산기 만들면서 풀이하기(1)

728x90

JFrame 란 java swing 클래스의 일부이며 구현되는 하나의 창이다.

스윙은 자바에서 그래픽 사용자 인터페이스를 구현하기 위하여 제공되는 클래스 이다.

또한 버튼, 창, 표, 트리 등의 컴포넌트들을 이용할 수 있게 해주는 클래스이다.

계산기를 GUI형태로 구현하기위해 JFrame를 사용한다. 이를 사용하기 위해서는 클래스뒤에 JFrame를 상속시켜줘야한다.

클래스 선언뒤 {전에 extends JFrame를 입력하면 import를 해줘야하는데 JFrame위에 커서를 올리고 ctrl + shift + O를 입력하면 자동으로 맨위에 선언된다.

import문은 코드의 길어짐을 방지할 수 있도록 클래스 명을 생략할 수 있다. 아직 잘 모르니까 그냥 이대로 따라해보도록 한다.

setLayout는 GUI에서 버튼을 어떻게 정렬할지 만드는것 기본으로 FlowLayout , GridLayout 과 직접 크기와 위치를 지정하는 null이 있다.

 

 

import.java...

Color / 색상변경시 선언
Font / 폰트변경시 선언
GridLayout  / GridLayout 사용시선언 (행개수,열개수,좌우간격,상하간격)

import.javax.swing  버튼이나 텍스트필드, 프레임, 패널과같은 GUI지원을 위해 선언

 

 

JButton / 클릭시 이벤트가 발생하면 버튼을 GUI로 보여주기 위한 선언
JTextField / 값을 받을 수 있는 Text 패널을 만들기위한 선언

 

 

 

 

 

음.. imprt문은 안에 안들어가네요.

 

 

import java.awt.Color; //JFrame 뺴고 자동입력 됌
import java.awt.Font;
import java.awt.GridLayout; // Grid문을 사용하기위해 선언
import javax.swing.JButton;
import javax.swing.JFrame; // import문을 선언 JFrame에 커서올리고 Ctrl + Shift + O 입력시 자동입력
import javax.swing.JPanel;
import javax.swing.JTextField;

public class Calculator extends JFrame { // JFrame를 사용하기위해 상속시킴

private JTextField inputSpace;

public Calculator() {

    // 프레임창 지정
    setLayout(null); // GUI 형식을 지정할 수 있다.

    inputSpace = new JTextField(); // inputSpace에는 GUI로 텍스트를 입력받는 JTextField로 구현
    inputSpace.setEditable(false); // 수정이 불가능하도록 만듬
    inputSpace.setBackground(Color.white); // 배경색을 지정
    inputSpace.setHorizontalAlignment(JTextField.RIGHT); //  오른쪽으로 정렬한다.
    inputSpace.setFont(new Font("Arial", Font.BOLD, 50)); // 폰트 Arial로 지정
    inputSpace.setBounds(8,10,270,70); // x : 8 y : 10 의 위치에 270x70의 크기로 설정

    //버튼패널 지정
    JPanel buttonPanel = new JPanel();
    buttonPanel.setLayout(new GridLayout(4,4,10,10)); // 칸수, 세로 칸수, 좌우간격, 상하간격을 입력 4행 4열로 총 16칸을 만들었다.
    buttonPanel.setBounds(8, 90, 270, 235); //가로위치,세로위치,가로길이,세로길이

    String button_names[] = {"C","÷","×","=","7","8","9","+","4","5","6","-","1","2","3","0"}; // 16칸에 각 값 입력
    JButton buttons[] = new JButton[button_names.length]; // 값초기화를 위한 버튼 배열선언

    for (int i=0; i<button_names.length; i++) { // 선언해놓은 배열 값은 총 16글자
        buttons[i] = new JButton(button_names[i]);  // 우선 값을 삽입해준다.
        buttons[i].setFont(new Font("Arial",Font.BOLD, 20)); // 값이 어떻든 폰트는 동일하게 만든다.

        if(button_names[i] =="C" )buttons[i].setBackground(Color.red); // C문자일시 백그라운드 색상을 "RED"로 변경

        else if ((i >= 4 && i <= 6) || (i >= 8 && i<= 10) || (i >= 12 && i <= 15)) buttons[i].setBackground(Color.black);
        // 숫자는 모두 black로 지정   i는 순번대로 입력된 숫자를 직접 입력했다.

        else buttons[i].setBackground(Color.GRAY); // 나머지는 "GRAY"로 지정  ※if문 종료

        buttons[i].setForeground(Color.white); // 폰트는 "White"로 지정
        buttons[i].setBorderPainted(false); // 테두리 없애기 이거 무슨차이지?
        buttonPanel.add(buttons[i]); // 배열에 삽입해놓은 값을 buttonPanel로 옮겨 삽입한다.


}

    add(inputSpace); // 기본 프레임창을 호출
    add(buttonPanel); // 위에서 만든 버튼들에 값을넣어 불러온다.

    setTitle("계산기"); // 창의 제목
    setVisible(true); // 창을 화면에 나타내도록 설정(GUI)
    setSize(300, 370); // 창의 사이즈 설정
    setLocationRelativeTo(null); // 창을 한가운데로 나오게 한다.
    setResizable(false); // 창의 사이즈 설정이 불가능 하도록 만든다.
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 창을 닫을때 실행중인 프로그램도 함께 종료시킨다.
}

계산기 title과 기본사이즈, 버튼으로 값을 입력받아 처리할 하얀색 공간은

inputSpace에 JTextField 및 나머지 셋팅값을 합쳐서 만들어졌고,

나머지 버튼들은 buttonPancel에 값을 넣을 수 있는 레이아웃 공간을 4행4열로 16칸 생성 후 배열인 buttons를 선언하여 값들을 넣으며 폰트색과 배경색을 조정해서 만들어둔 buttonPanel에 집어넣어 완성한 후 불러와서 완성되었다.

열심히 알아보고 이해하고있지만 틀릴수도 있어요.. 틀리면 꼭 지적 부탁드립니다.

728x90
댓글