JavaFX | 액션 이벤트 사용 | setOnAction와 EventHandler


푸시 버튼 (Button)은 단지 표시를 위한 것이 아니라, 클릭하여 어떤 처리를 수행하기 위해 사용한다. 이 처리는 Button에 포함되어 있는 “이벤트"를 이용하여 실행한다.

이벤트란 다양한 조작을 하고 프로그램의 상태가 변화하거나 했을 때 발생하는 신호와 같은 것이다. 각각의 컨트롤(TextField 및 Button 등)는 어떤 이벤트에 해당하는지 정해져 있어서 그 이벤트 처리를 위한 기능을 수행하는 메소드를 포함하고 있다.

Button 컨트롤을 클릭했을 때의 이벤트는 “액션 이벤트"라고 한다. 이는 그 컨트롤이 가장 일반적인 형태로 이용되는 경우에 처리를 위한 이벤트이다. 예를 들면, 푸시 버튼이라면 “클릭"이라는 동작이 가장 기본적인 조작일 것이다. 이러한 조작을 할 때에 액션 이벤트라는 것이 발생하게 된다.

액션 이벤트는 Button에 포함되어 있는 다음과 같은 메소드를 사용하여 설정할 수 있다.

button.setOnAction("EventHandler");

발생한 이벤트의 처리는 javafx.event 패키지에 있는 “EventHandler"인터페이스라는 것을 사용한다.

EventHandler의 구조

EventHandler에는 이벤트가 발생했을 때 호출되는 메소드가 미리 준비되어 있다. 이 메소드를 재정의(override)함으로써 해당 이벤트 발생시 처리를 구현할 수 있다. 이것은 다음과 같은 형태로 사용할 수 있다.

public void handle (Event e) {
    // 여기에 처리를 준비한다
}

이용시에는 EventHandler를 implements 한 클래스를 준비하거나, 익명 클래스(Anonymous Class)으로 new를 해서 인스턴스 생성하여 인수로 메소드에 넣는 방식으로 구현하게 될 것이다.