KeyboardFocusManager — 포커스 관리자
KeyboardFocusManager — 포커스 관리자
KeyboardFocusManager는 활성화된(active) 창과 포커스가 있는(focused) 창, 그리고 현재 포커스 소유자(focus owner)를 관리하는 역할을 맡아요. 포커스 소유자는 사용자가 발생시키는 모든 KeyEvent를 보통 받게 되는 컴포넌트예요.
본문
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를 등록하는 방식을 주로 써요.