<Event처리> 컴포넌트에 기능을 정의하자!!
- Event : 사건 (~했을때)
예) Button을 눌렀을때
Scrollbar조절바를 움직였을때
TextField에 글자를 썼을때
Frame우측상단의 X버튼을 클릭했을때
- 컴포넌트에 사건이 발생했을 때 기능을 부여하는 것.
1. 컴포넌트에 적용할 이벤트를 분석.
2. EventListener(인터페이스) 상속.
----> implements (구현의 약속)
※ 인터페이스 만드는 방법
- 분석된 이벤트클래스에서 Event대신 Listener붙임!!
예) ActionEvent -----> ActionListener
ItemEvent -----> ItemListener
MouseEvent -----> MouseListener
3. 메소드 구현 (이벤트 핸들러). <==== 기능 정의
class A extends Frame implements ActionListener{
public void actionPerformed(ActionEvent e){ ==> 이벤트처리부(EventHandler)
//코드: 이벤트 발생시(예:버튼 눌림) 실행할 기능 구현!!
}
}
4. 감시자(연결자)메소드 호출 등록.
(EventSource와 EventHandler를 연결!!)
이벤트소스(이벤트 발생시키는 컴포넌트) 이벤트처리부
Button actionPerformed()메소드
TextField
List
형식) 이벤트소스명.add인터페이스명(이벤트핸들러위치); //----> 연결자 등록
위치) setSize(); setVisible(); 이후에 기술하는 것이 좋다.
예)
.....
setSize(300,300);
setVisible(true);
bt.addActionListener(this);
==> bt(Button)라는 EventSource와
actionPerformed()라는 EventHandler를 연결 시켜주는 역할.
import java.awt.Frame;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class A implements ActionListener{
Frame f;
public A(Frame f) {
this.f = f;
}
@Override
public void actionPerformed(ActionEvent e) {//이벤트 처리부
System.out.println("A클래스 만세~!!");
f.setTitle("타이틀변경~!!");
}
}
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class B implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("안녕~!!");
}
}
<Tip>
1. 버튼에 특수문자 나타내기
---> 키보드 한글 'ᄆ' 누르기
---> 한자키 누르기
---> 특수문자 '▷'찾아서 선택하기
2. 프레임 X버튼 눌렀을때 프로그램 종료하기
---> 기존 작성된 익명의 내부클래스 복사하고 붙여넣기
---> extends Frame시 : addWindowListener()
Frame f 생성시 : f.addWinodwListener()
3. 프로그램 실행 중 예상치 못한 상황에 대한 처리!!
- TextField입력된 데이터 -----> List 옮길때
데이터가 입력되지 않고 엔터를 치면 빈줄이 List에 추가!!
- '▷' 버튼 클릭시 만약 좌측리스트에 선택된 아이템이 없다면
IllegalArgumentException발생!! <== getSelectedItem()경우
ArrayIndexOutOfBoundsException발생!! <== getSelectedIndex()경우
'JAVA' 카테고리의 다른 글
#11 PersonMenu MVC, Thread(스레드) (0) | 2018.12.10 |
---|---|
#10 AWT vs Swing,계산기 만들기 (0) | 2018.12.05 |
#8 중첩클래스, TUI, AWT, 데이터저장 (0) | 2018.11.26 |
#7 배열사용이유, 배열(Vector), Exception(예외처리), Matches, StringTest (0) | 2018.11.25 |
#6 문자열 내용 비교, 이름(추가,검색,수정,삭제), String Test (0) | 2018.11.24 |