package CHAPTER11;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

// JFrame을 상속한 클래스
public class C11_03_InnerClassEventExample extends JFrame {

    private int count = 0; // 숫자 카운트 변수
    private JLabel label; // 숫자를 표시할 레이블

    // 생성자
    public C11_03_InnerClassEventExample() {
        // 프레임 설정
        setTitle("숫자 카운트 예제");
        setSize(300, 200);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLayout(null); // 레이아웃 설정 (절대 위치)

        // 레이블 생성
        label = new JLabel("Count: 0");
        label.setBounds(110, 50, 100, 30); // 레이블 위치와 크기 설정
        add(label); // 레이블을 프레임에 추가

        // 버튼 생성
        JButton button = new JButton("Click Me");
        button.setBounds(100, 100, 100, 30); // 버튼 위치와 크기 설정

        // 내부 클래스를 사용하여 이벤트 리스너 추가
        button.addActionListener(new ButtonClickListener());

        // 버튼을 프레임에 추가
        add(button);

        // 프레임을 화면에 표시
        setVisible(true);
    }

    // 내부 클래스: 이벤트 리스너 구현
    private class ButtonClickListener implements ActionListener {
        @Override
        public void actionPerformed(ActionEvent e) {
            // 버튼 클릭 시 숫자 증가 및 업데이트
            count = (count % 100) + 1; // 1부터 100까지 반복
            label.setText("Count: " + count);
        }
    }

    // 메인 메서드
    public static void main(String[] args) {
        // 프레임 생성
        new C11_03_InnerClassEventExample();
    }
}

