KeyEventPostProcessor — 키 이벤트 후처리기

KeyEventPostProcessor — 키 이벤트 후처리기

KeyEventPostProcessor는 현재 KeyboardFocusManager와 협력해서, 소비되지 않은(unconsumed) 모든 KeyEvent의 최종 해석을 담당해요. 등록된 처리기는 이벤트가 대상에 전달·처리된 후에 이벤트를 받아볼 수 있어요.

출처: Java API Reference

본문

@FunctionalInterface
public interface KeyEventPostProcessor {
    boolean postProcessKeyEvent(KeyEvent e);
}

애플리케이션에서 어느 컴포넌트도 포커스를 소유하지 않아서 버려질 뻔한 KeyEvent도 등록된 처리기로 전달돼요. 이를테면 메뉴 단축키처럼 전역적인 키 이벤트 후처리가 필요한 기능을 구현할 수 있게 해줘요. KeyboardFocusManager 자신도 KeyEventPostProcessor를 구현해요.

처리기가 직접 이벤트를 디스패치하려면 KeyboardFocusManager.redispatchEvent를 사용해서 재귀 호출을 막아야 해요.

  • 반환값이 false면 이벤트는 체인의 다음 처리기로 전달되고, 마지막엔 KeyboardFocusManager가 처리해요.
  • 반환값이 true면 이벤트가 완전히 처리된 것으로 간주하고 AWT는 더 이상 조치하지 않아요.
  • 이벤트를 소비했지만 false를 반환하면 소비된 이벤트도 여전히 다음 처리기로 전달돼요.

기본적으로 KeyboardFocusManager는 소비된 KeyEvent에 대해 후처리를 하지 않아요. 처리 전에 이벤트가 소비되었는지 확인하는 습관이 중요해요.

더 알아보기