KeyEventPostProcessor — 키 이벤트 후처리기
KeyEventPostProcessor — 키 이벤트 후처리기
KeyEventPostProcessor는 현재 KeyboardFocusManager와 협력해서, 소비되지 않은(unconsumed) 모든 KeyEvent의 최종 해석을 담당해요. 등록된 처리기는 이벤트가 대상에 전달·처리된 후에 이벤트를 받아볼 수 있어요.
본문
@FunctionalInterface
public interface KeyEventPostProcessor {
boolean postProcessKeyEvent(KeyEvent e);
}
애플리케이션에서 어느 컴포넌트도 포커스를 소유하지 않아서 버려질 뻔한 KeyEvent도 등록된 처리기로 전달돼요. 이를테면 메뉴 단축키처럼 전역적인 키 이벤트 후처리가 필요한 기능을 구현할 수 있게 해줘요. KeyboardFocusManager 자신도 KeyEventPostProcessor를 구현해요.
처리기가 직접 이벤트를 디스패치하려면 KeyboardFocusManager.redispatchEvent를 사용해서 재귀 호출을 막아야 해요.
- 반환값이
false면 이벤트는 체인의 다음 처리기로 전달되고, 마지막엔KeyboardFocusManager가 처리해요. - 반환값이
true면 이벤트가 완전히 처리된 것으로 간주하고 AWT는 더 이상 조치하지 않아요. - 이벤트를 소비했지만
false를 반환하면 소비된 이벤트도 여전히 다음 처리기로 전달돼요.
기본적으로 KeyboardFocusManager는 소비된 KeyEvent에 대해 후처리를 하지 않아요. 처리 전에 이벤트가 소비되었는지 확인하는 습관이 중요해요.