FocusTraversalPolicy 클래스
FocusTraversalPolicy 클래스
FocusTraversalPolicy는 특정 포커스 순회 루트(focus cycle root)에 속한 Component들이 포커스를 어떤 순서로 옮겨 다니는지 정의해요. 이 클래스의 인스턴스는 임의의 포커스 순회 루트에 정책을 적용할 수 있어서, 여러 Container 간에 공유할 수 있어요. 컴포넌트 계층의 포커스 순회 루트가 바뀌어도 다시 초기화할 필요가 없어요.
본문
FocusTraversalPolicy의 핵심 책임은 UI에서 앞으로·뒤로 순회할 때 다음 컴포넌트와 이전 컴포넌트를 결정하는 알고리즘을 제공하는 거예요.
public abstract class FocusTraversalPolicy
extends Object
추상 메서드
getComponentAfter(Container, Component)— 지정한 컴포넌트 다음에 포커스를 받을 컴포넌트를 반환해요.getComponentBefore(Container, Component)— 지정한 컴포넌트 이전에 포커스를 받을 컴포넌트를 반환해요.getFirstComponent(Container)— 순회 주기의 첫 컴포넌트를 반환해요.getLastComponent(Container)— 순회 주기의 마지막 컴포넌트를 반환해요.getDefaultComponent(Container)— 새 순회 주기로 들어갈 때 처음 포커스를 받는 기본 컴포넌트를 반환해요.
첫·마지막 컴포넌트는 정방향·역방향 순회가 끝까지 와서 다시 감길 때 사용돼요. 기본 컴포넌트는 새 포커스 순회 주기로 내려갈 때 가장 먼저 포커스를 받아요.
초기 컴포넌트
FocusTraversalPolicy는 창의 초기 컴포넌트를 결정하는 알고리즘도 선택적으로 제공할 수 있어요. 초기 컴포넌트는 Window가 처음 보이게 될 때 첫 번째로 포커스를 받는 컴포넌트예요. 이를 다루는 메서드가 getInitialComponent(Window)예요.
포커스 순회 정책 제공자
FocusTraversalPolicy는 포커스 순회 정책 제공자(focus traversal policy provider)를 고려해요. 첫·마지막·다음·이전 컴포넌트를 찾을 때 포커스 순회 정책 제공자를 만나면, 그 제공자의 포커스 순회 정책으로 탐색을 수행해요.
자세한 내용은 Java Tutorial의 "How to Use the Focus Subsystem"과 Focus Specification 문서를 참고하세요.