본문 바로가기
Java/자바 Swing

[Java] 62. Swing: 이벤트 리스너

글: Song hyun 2024. 4. 29.
728x90
반응형

[Java] 62. Swing: 이벤트 리스너

 

1. 이벤트 리스너란?
-운영체제(OS)는 우리의 움직임(마우스 클릭, 커서 움직이기, 버튼 누르기 등)을 감지한다.

=> 특정 동작이 감지되었을 때, OS에게 이벤트가 발생하도록 요청하는 것!

 

 

2. 응용 예제 만들기

: 버튼을 클릭하면 특정 스크립트가 출력되는 코드를 작성해보자.

 

ColorChangeFrame 클래스 살펴보기

(1) 멤버 변수 
JButton 형식의 객체 button1을 가진다.

(2) 사용자 정의 생성자: ColorChangeFrame()
객체 생성 시, 순서대로 initData(), setInitLayout(), addEventListener()를 실행하게 한다.

(3) initData() 메서드
setSize: 창의 크기를 가로 세로 각각 500으로 설정한다.
setDefaultCloseOperation: x버튼을 눌렀을 때의 결과를 처리한다. (=창닫기)
button1=new JButton: 새로운 JButton 객체를 생성한다.

(4) setInitLayout() 메서드
setLayout(new FlowLayout)()): 배치관리자를 FlowLayout으로 설정한다.
add(button1): initData() 메서드에서 생성한 button1 객체를 화면에 추가한다.
setVisible(true); 창이 보이도록 설정한다.

(5) addEventListener() 메서드
button1.addActionListener((ActionListener)this);
-addActionListener는 파라미터값으로 actionListener를 받는다.
-actionListener는 button1이 눌러지는지, 계속 이벤트를 지켜보게 된다.

(6) actionPerformed() 메서드
ㄴ해당 메서드는 actionListener가 반응하면 호출되는 메서드이다.
System.out.println: 해당 스크립트를 출력한다.
e.toString: actionListener를 호출한 버튼(e=button1) 객체의 정보를 문자열로 반환한다.
setBackground(Color.BLACK) 배경을 검은 색으로 전환시킨다.

package ch05;

import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
// 이벤트 리스너를 사용하는 방법
// 1. implements ActionListener를 사용하는 방법
// ActionListener: 운영 체제가 제어하는 이벤트를 등록할 수 있다.
public class ColorChangeFrame extends JFrame implements ActionListener {
	
	// 이벤트 리스너에 대한 개념을 이해하자.
	private JButton button1;
	
	public ColorChangeFrame() {
		initData();
		setInitLayout();
		addEventListener();
	}
	
	private void initData() {
		setSize(500,500);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		button1=new JButton("button1");
	}
	private void setInitLayout() {
		setLayout(new FlowLayout());
		add(button1);
		setVisible(true);
	}
	private void addEventListener() {
		// button1이 눌러지는지 계속 이벤트를 지켜보고 있어.
		// 이벤트 등록
		//addActionListener는 actionListener를 파라미터 값으로 받는다.
		button1.addActionListener((ActionListener) this);
	}
	
	public static void main(String[] args) {
		new ColorChangeFrame();
	}
	
	public void actionPerformed(ActionEvent e) {
		System.out.println("actionPerformed 메서드 호출()");
		System.out.println(e.toString());
		setBackground(Color.BLACK);
	}
	// 약속되어있던 추상 메서드를 오버라이드했다.

}

 

728x90
반응형