더북(TheBook)

EventHandler<T>도 제네릭 인터페이스다. 여기서 T는 보고할 이벤트 타입(예를 들어 버튼 클릭에 해당하는 ActionEvent)이다.

수행할 액션을 지정하려면 EventHandler<T> 인터페이스를 구현해야 한다.

class CancelAction implements EventHandler<ActionEvent> {

    public void handle(ActionEvent event) {

        System.out.println("Oh noes!");

    }

}


그런 다음 이 클래스의 객체를 생성해서 버튼에 추가해야 한다.

Button cancelButton = new Button("Cancel");

cancelButton.setOnAction(new CancelAction());


Note ≣

오라클이 JavaFX를 스윙 GUI 툴킷의 후속 버전으로 삼았으므로 책에서도 GUI 예제에 JavaFX를 사용한다. JavaFX는 방금 살펴본 문장 정도만 알아도 괜찮다. 구체적인 내용은 중요하지 않다. 스윙이든 JavaFX든 안드로이드든 간에 모든 사용자 인터페이스 툴킷에서 버튼을 클릭했을 때, 실행할 코드를 해당 버튼에 전달해야 한다는 점이 중요하다.


물론 이 방식으로 버튼 액션을 정의하는 것은 조금 지루하다. 다른 언어에서는 클래스를 만들고 인스턴스를 생성하는 식으로 멀리 돌아가지 않고, 실행할 함수를 버튼에 바로 전달한다. 같은 동작을 자바로는 어떻게 할 수 있는지 다음 절에서 알아보자.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.