[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);
}
// 약속되어있던 추상 메서드를 오버라이드했다.
}
'Java > 자바 Swing' 카테고리의 다른 글
[Java] 64. Swing: 키보드 리스너 (0) | 2024.04.30 |
---|---|
[Java] 63. Swing: 리스너 응용-리스너를 구현하는 두 가지 방법 (0) | 2024.04.29 |
[Java] 61. Swing: 이미지 겹치기 (0) | 2024.04.29 |
[Java] 60. Swing: 이미지 출력하기 (0) | 2024.04.29 |
[Java] 59. 사용자 정의 예외 클래스 (0) | 2024.04.29 |