본문 바로가기
자바(Java)

AWT를 사용하여 간단한 계산기를 만드는 Java 프로그램 쉽게 이해하기

by 코딩하는 욤욤이 2024. 11. 19.
반응형

Java의 AWT(Abstract Window Toolkit)를 사용하여 간단한 계산기를 만드는 프로그램을 작성하려면, 다음과 같은 단계를 통해 진행할 수 있습니다. 아래에는 프로그램의 구조와 각 요소를 쉽게 이해할 수 있도록 자세히 설명하겠습니다.


1. AWT란 무엇인가?

AWT(Abstract Window Toolkit)는 Java에서 GUI(Graphical User Interface)를 만드는 기본적인 도구입니다. 버튼, 텍스트 필드, 레이블, 프레임 등 다양한 컴포넌트를 제공하여 그래픽 기반의 프로그램을 쉽게 만들 수 있도록 돕습니다.


2. 계산기의 주요 기능

  • 두 숫자를 입력받아 덧셈, 뺄셈, 곱셈, 나눗셈을 수행.
  • 결과를 화면에 표시.

3. 프로그램 설계

1) 사용자 인터페이스(UI) 구성
계산기는 다음 컴포넌트들로 구성됩니다:

  • 두 개의 텍스트 필드 (숫자 입력용)
  • 네 개의 버튼 (+, -, *, /)
  • 결과를 보여줄 레이블

2) 이벤트 처리
버튼을 클릭하면 연산이 수행되고 결과가 표시되도록 합니다. 이를 위해 AWT에서 제공하는 ActionListener를 사용합니다.


4. 코드 작성

import java.awt.*;
import java.awt.event.*; // 이벤트 처리를 위한 패키지

// 계산기 클래스는 Frame을 상속받아 GUI를 구성
public class Calculator extends Frame implements ActionListener {
    // 컴포넌트 선언
    TextField num1, num2;  // 숫자 입력용 텍스트 필드
    Label resultLabel;     // 결과를 보여주는 레이블
    Button addButton, subButton, mulButton, divButton; // 연산 버튼

    // 생성자 (초기화)
    public Calculator() {
        // 프레임의 제목 설정
        setTitle("AWT 계산기");
        setSize(400, 300); // 프레임 크기 설정
        setLayout(new FlowLayout()); // 간단한 레이아웃 설정

        // 컴포넌트 초기화
        num1 = new TextField(10); // 첫 번째 숫자 입력
        num2 = new TextField(10); // 두 번째 숫자 입력
        resultLabel = new Label("결과: "); // 결과 표시
        addButton = new Button("+"); // 덧셈 버튼
        subButton = new Button("-"); // 뺄셈 버튼
        mulButton = new Button("*"); // 곱셈 버튼
        divButton = new Button("/"); // 나눗셈 버튼

        // 컴포넌트를 프레임에 추가
        add(new Label("숫자 1:"));
        add(num1);
        add(new Label("숫자 2:"));
        add(num2);
        add(addButton);
        add(subButton);
        add(mulButton);
        add(divButton);
        add(resultLabel);

        // 이벤트 리스너 추가
        addButton.addActionListener(this);
        subButton.addActionListener(this);
        mulButton.addActionListener(this);
        divButton.addActionListener(this);

        // 프레임 종료 설정
        addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent e) {
                System.exit(0); // 프로그램 종료
            }
        });
    }

    // ActionListener 구현 (버튼 클릭 시 호출)
    @Override
    public void actionPerformed(ActionEvent e) {
        try {
            // 텍스트 필드에서 입력받은 숫자 가져오기
            double n1 = Double.parseDouble(num1.getText());
            double n2 = Double.parseDouble(num2.getText());
            double result = 0;

            // 어떤 버튼이 클릭되었는지 확인
            if (e.getSource() == addButton) {
                result = n1 + n2;
            } else if (e.getSource() == subButton) {
                result = n1 - n2;
            } else if (e.getSource() == mulButton) {
                result = n1 * n2;
            } else if (e.getSource() == divButton) {
                if (n2 != 0) { // 나눗셈은 0으로 나누기 방지
                    result = n1 / n2;
                } else {
                    resultLabel.setText("결과: 0으로 나눌 수 없습니다!");
                    return;
                }
            }

            // 결과를 레이블에 표시
            resultLabel.setText("결과: " + result);
        } catch (NumberFormatException ex) {
            resultLabel.setText("결과: 숫자를 입력하세요!");
        }
    }

    // main 메서드 (프로그램 시작점)
    public static void main(String[] args) {
        Calculator calc = new Calculator(); // 계산기 객체 생성
        calc.setVisible(true); // 프레임 표시
    }
}

5. 코드 설명

  1. 프레임 생성
    Calculator 클래스는 Frame을 상속받아 AWT 프레임 창을 생성합니다.
    setTitle, setSize, setLayout 등을 사용해 프레임의 기본 설정을 지정합니다.
  2. 컴포넌트 추가
    텍스트 필드, 버튼, 레이블 등 사용자와 상호작용할 컴포넌트를 생성하고, add 메서드로 프레임에 추가합니다.
  3. 이벤트 처리
    버튼 클릭 이벤트를 처리하기 위해 ActionListener를 구현합니다. 각 버튼은 연산을 수행하며, 결과를 레이블에 출력합니다.
  4. 예외 처리
    사용자가 숫자가 아닌 값을 입력하거나, 0으로 나누는 경우 오류 메시지를 출력합니다.
  5. 프로그램 실행
    main 메서드에서 계산기 객체를 생성하고, 프레임을 화면에 표시합니다.

6. 프로그램 실행 방법

  1. 위 코드를 Java 파일에 저장 (예: Calculator.java).
  2. 명령 프롬프트(또는 IDE)에서 컴파일:
javac Calculator.java

 

   3.실행

java Calculator

7. 결과

프레임이 실행되면 숫자를 입력하고 연산 버튼을 클릭하여 결과를 확인할 수 있습니다. 예를 들어, "10"과 "5"를 입력하고 "+" 버튼을 누르면 결과 레이블에 결과: 15.0이 표시됩니다.


8. 추가 학습 포인트

  • 레이아웃 관리: GridLayout 등 다른 레이아웃을 사용하여 더 깔끔한 UI를 만들 수 있습니다.
  • 스윙(Swing): AWT보다 발전된 GUI 도구로, AWT 대신 사용할 수 있습니다.
  • 에러 메시지 개선: 대화 상자(Dialog)를 사용해 사용자에게 오류를 더 명확히 전달할 수 있습니다.

이 프로그램은 Java GUI 프로그래밍의 기본을 배우는 데 좋은 출발점이 될 것입니다!

반응형