KeyboardFocusManager — 포커스 관리자

KeyboardFocusManager — 포커스 관리자

KeyboardFocusManager는 활성화된(active) 창과 포커스가 있는(focused) 창, 그리고 현재 포커스 소유자(focus owner)를 관리하는 역할을 맡아요. 포커스 소유자는 사용자가 발생시키는 모든 KeyEvent를 보통 받게 되는 컴포넌트예요.

출처: Java API Reference

본문

public abstract class KeyboardFocusManager extends Object
        implements KeyEventDispatcher, KeyEventPostProcessor

포커스가 있는 창은 포커스 소유자를 포함하거나 그 자신인 창이에요. 활성 창은 Frame이나 Dialog만 될 수 있어요. 네이티브 윈도우 시스템은 활성 창이나 그 자식을 강조된 제목 표시줄 같은 특수 장식으로 표시할 수 있어요. 활성 창은 항상 포커스가 있는 창이거나, 포커스가 있는 창의 소유자 중 첫 번째 Frame·Dialog예요.

이 클래스는 클라이언트 코드가 포커스 소유자를 조회하고 포커스 변경을 시작하기 위한 중앙 저장소이자, 모든 FocusEvent, 포커스 관련 WindowEvent, KeyEvent의 이벤트 디스패처예요.

포커스 순회 키 상수

  • FORWARD_TRAVERSAL_KEYS — 앞으로 포커스 순회 키 식별자
  • BACKWARD_TRAVERSAL_KEYS — 뒤로 포커스 순회 키 식별자
  • UP_CYCLE_TRAVERSAL_KEYS — 위로 순환하는 포커스 순회 키 식별자

기본 포커스 순회 키는 setDefaultFocusTraversalKeys(int, Set<? extends AWTKeyStroke>)로 설정하고 getDefaultFocusTraversalKeys(int)로 조회할 수 있어요.

하위 클래스 만들기

이 클래스는 추상 클래스라 직접 인스턴스를 만들 수 없어요. 포커스 관리를 커스터마이즈하려면 하위 클래스를 만들거나, 포커스 관련 동작을 변경하려면 KeyEventDispatcher·KeyEventPostProcessor를 등록하는 방식을 주로 써요.

더 알아보기