Swing_Event

김영준·2024년 12월 17일

자바_학교

목록 보기
4/4

버튼을 클릭하는것(이벤트) 클릭하는 정보를 담는 것(객체) 이것들로 하여금 이벤트를 발생시키는 주체(소스)

이벤트 소스
: 이벤트가 실행되었을 때, 그 이벤트가 어떤 컴포넌트에서 발생했는지 말하는거

리스너 인터페이스

: 이벤트가 발생했을 때 그 이벤트를 처리하기 위한 메서드를 정의한 인터페이스

이벤트 소스가 이벤트 객체에 담기면 그에 맞는 리스너 인터페이스를 실행시키면 되는것

이벤트가 실행되면 그 이벤트를 이벤트객체가 받고, 이벤트리스너를 인터페이스로 구현시킨 클래스를 실행하는 것이고, 이벤트 소스는 그 이벤트가 실행되는 곳을 말해주는 것

이벤트 객체: 이벤트가 발생했을 때 생성되며 이벤트 정보가 담깁니다.
이벤트 리스너: 이벤트가 발생하면 이벤트 객체를 전달받아 이벤트를 처리합니다.
이벤트 소스: 이벤트를 발생시킨 주체(컴포넌트)이며 e.getSource()를 통해 가져옵니다.

예시 코드

package Swing;

import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

// 이벤트 리스너 클래스 작성
class MyActionListener implements ActionListener {
    @Override
    public void actionPerformed(ActionEvent e) { // 버튼 클릭 시 호출되는 메서드
        // e는 이벤트 객체
        // 이벤트 소스 가져오기
        JButton b = (JButton) e.getSource();


        // 버튼의 현재 텍스트를 확인하고 변경
        if (b.getText().equals("Action")) {
            b.setText("액션"); // 버튼의 텍스트를 변경
        } else {
            b.setText("Action"); // 버튼의 텍스트를 다시 "Action"으로 변경
        }
    }
}

public class ActionListenerExample {
    public static void main(String[] args) {
        // JFrame 생성
        JFrame frame = new JFrame("ActionListener 예제");
        frame.setSize(300, 200);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        // JButton 생성
        JButton button = new JButton("Action");

        // 이벤트 리스너 객체 생성 및 등록
        MyActionListener listener = new MyActionListener();
        button.addActionListener(listener);

        // 버튼을 프레임에 추가
        frame.add(button);
        frame.setVisible(true);
    }
}

<코드 설명>

1. 버튼을 추가함
2. 버튼에 액션을 감지할 수 있는 기능을 넣음 (클래스)
3. 액션이 감지되면 클래스 실행
4. 클래스는 버튼이 눌린 컴포넌트를 가져옴
5. 그 컴포넌트가 Action이면 액션으로 변경
  1. e.getSource()
    e: 이벤트 객체로, 이벤트에 대한 정보를 담고 있습니다.
    e.getSource(): 이벤트가 발생한 소스 객체(컴포넌트)를 반환합니다.
    예를 들어 버튼이 클릭되었으면, 그 버튼 객체(JButton)가 반환됩니다.
  2. (JButton) 형변환
    e.getSource()는 Object 타입으로 반환되기 때문에, 원래 타입(여기서는 JButton)으로 형변환해야 합니다.
    (JButton)은 반환된 객체를 JButton 타입으로 변환하는 캐스팅입니다.
  3. 최종 결과
    JButton b = (JButton) e.getSource();
    → 이벤트를 발생시킨 버튼 객체를 가져와 b라는 이름의 JButton 참조 변수에 저장합니다.
profile
개발의 신이 될거다

0개의 댓글