이 프로그램은 Java의 Swing 라이브러리를 활용하여 간단한 카운터(숫자 세기) 애플리케이션을 구현한 예제입니다. 화면에는 JLabel 컴포넌트로 'Count:'라는 레이블을 표시하고, 현재 숫자 값을 보여주는 JTextField, 그리고 JButton 컴포넌트로 Add(추가), Remove(제거), Reset(초기화) 세 개의 버튼을 배치합니다.
각 버튼의 동작 방식은 다음과 같습니다.
- Add 버튼: 클릭할 때마다 JTextField에 표시된 카운트 값이 1씩 증가합니다.
- Remove 버튼: 클릭할 때마다 카운트 값이 1씩 감소합니다.
- Reset 버튼: 클릭하면 카운트 값이 0으로 초기화됩니다.
버튼 클릭 이벤트는 ActionListener 인터페이스를 통해 처리되며, actionPerformed() 메서드 안에서 어떤 버튼이 눌렸는지 getSource()로 판별한 후 카운트 값을 갱신하고 화면을 다시 그립니다.
예제 코드
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class CounterTest extends JFrame implements ActionListener {
private JLabel label;
private JTextField text;
private JButton addBtn, removeBtn, resetBtn;
private int count;
public CounterTest() {
setTitle("Counter Test");
setLayout(new FlowLayout());
count = 0;
label = new JLabel("Count:");
text = new JTextField("0", 4);
addBtn = new JButton("Add");
removeBtn = new JButton("Remove");
resetBtn = new JButton("Reset");
addBtn.addActionListener(this);
removeBtn.addActionListener(this);
resetBtn.addActionListener(this);
add(label);
add(text);
add(addBtn);
add(removeBtn);
add(resetBtn);
setSize(375, 250);
setLocationRelativeTo(null);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}
public void actionPerformed(ActionEvent ae) {
if (ae.getSource() == addBtn) {
count++; // 카운트를 1만큼 증가
text.setText(String.valueOf(count));
repaint();
} else if (ae.getSource() == removeBtn) {
count--; // 카운트를 1만큼 감소
text.setText(String.valueOf(count));
repaint();
} else if (ae.getSource() == resetBtn) {
count = 0; // 카운트를 0으로 초기화
text.setText(String.valueOf(count));
repaint();
}
}
public static void main(String[] args) {
new CounterTest();
}
}코드 설명
- CounterTest 클래스: JFrame을 상속받아 윈도우 창을 만들고, ActionListener를 구현하여 버튼 이벤트를 처리합니다.
- 생성자: 레이아웃 설정, 컴포넌트 생성 및 등록, 창 크기와 위치 지정 등 UI 초기화 작업을 수행합니다.
- actionPerformed() 메서드: 클릭된 버튼에 따라 count 변수를 증가, 감소 또는 초기화한 뒤
setText()로 JTextField에 결과를 갱신합니다.
실행 결과
프로그램을 실행하면 아래와 같은 창이 나타나며, 각 버튼을 클릭할 때마다 숫자가 실시간으로 변경되는 것을 확인할 수 있습니다.
