JAVA,객체지향

이벤트 리스너 원리

25G 2021. 12. 5. 10:38

컴퓨터에서 우리가 응용프로그램을 사용하면 기본적으로 OS의 통제 내에서 동작을 하게 돼 있다.

 

어떠한 GUI 환경에 리스너는 OS에서 어떠한 프로그램을 계속 주시하다가 프로그램을 사용하는 유저가 키보드나 마우스를 조작하게 됐을 때 그 움직임을 체크해서 어떠한 메모리공간에 저장을 한다.

이 움직임을 체크해서 순차적으로 기록해 두는 메모리 공간을 "이벤트 루프"(큐)라고 한다.

그리고 이벤트 루프에 기록해 놓은 명령을 실행하기 위해서 "이벤트 핸들러"가 호출이 된다. 이벤트핸들러는 Stack공간인데 즉 리스너 내부에 메서드가 호출된다는 뜻이다.(메서드 실행)

 

 

여기서 중요한 점은 대부분의 GUI 환경의 메커니즘이 위 내용과 같이 흘러가는데

 

java에서 GUI프로그램을 구축할 때 굉장히 중요한 규칙이 있다.

 

1. 그림 변경 시점 : 이벤트 루프에 모든 임무(task)가 완료되어야 repaint(다시 그려진다)가 된다.

    - java는 메인스래드가 하나이기 때문에 동시에 여러 가지 동작을 하려면 스레드가 필요하다

2. 메인스레드만 있으면 이벤트 루프에 사용자의 동작을 전달할 때 그 동작이 여러 가지 동작이라 하더라도 스레드가 하나이기 때문에 하나만 동작된다.