FocusTraversalPolicy 클래스

FocusTraversalPolicy 클래스

FocusTraversalPolicy는 특정 포커스 순회 루트(focus cycle root)에 속한 Component들이 포커스를 어떤 순서로 옮겨 다니는지 정의해요. 이 클래스의 인스턴스는 임의의 포커스 순회 루트에 정책을 적용할 수 있어서, 여러 Container 간에 공유할 수 있어요. 컴포넌트 계층의 포커스 순회 루트가 바뀌어도 다시 초기화할 필요가 없어요.

출처: Java API Reference

본문

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 문서를 참고하세요.

더 알아보기