InputContext 클래스
InputContext 클래스
입력 방식(input method)과 키보드 레이아웃 같은 텍스트 입력 기능을 제어하는 메서드를 제공해요. selectInputMethod는 클라이언트 컴포넌트가 로케일별로 입력 방식이나 키보드 레이아웃을 선택하게 하고, getLocale은 현재 입력 방식·키보드 레이아웃의 로케일을 얻도록 해요.
본문
기본적으로 Window 인스턴스마다 InputContext 인스턴스 하나가 생성되고, 이 입력 컨텍스트는 창의 컨테이너 계층 안의 모든 컴포넌트가 공유해요. 이것은 창 안에서 한 번에 하나의 텍스트 입력 연산만 가능하고, 포커스를 한 텍스트 컴포넌트에서 다른 컴포넌트로 옮길 때 텍스트를 커밋(commit)해야 한다는 뜻이에요. 원하지 않으면 텍스트 컴포넌트가 자신만의 입력 컨텍스트 인스턴스를 만들 수 있어요.
public class InputContext
extends Object
설치와 가용성
Java 플랫폼은 java.awt.im.spi 패키지의 인터페이스를 사용해 Java 프로그래밍 언어로 개발된 입력 방식을 지원하며, 애플리케이션 class path에 추가하면 사용할 수 있어요. 구현은 실행 중인 플랫폼의 네이티브 입력 방식도 지원할 수 있지만, 모든 플랫폼·로케일이 입력 방식을 제공하지는 않아요. 키보드 레이아웃은 호스트 플랫폼이 제공해요.
입력 방식은 (a) Java로 작성된 입력 방식이 설치되지 않았고, (b) Java 플랫폼 구현이나 기본 플랫폼이 네이티브 입력 방식을 지원하지 않을 때 사용할 수 없어요. 이 경우에도 입력 컨텍스트는 만들고 사용할 수 있으며, 그 동작은 각 메서드 아래에 지정돼 있어요.
주요 메서드
getInstance()— 기본 입력 컨텍스트 인스턴스를 반환하는 정적 메서드예요.selectInputMethod(Locale)— 로케일별로 입력 방식·키보드 레이아웃을 선택해요.getLocale()— 현재 입력 방식·키보드 레이아웃의 로케일을 반환해요.setCharacterSubsets(Character.Subset[])— 입력 방식이 사용할 문자 하위 집합을 설정해요.setCompositionEnabled(boolean)/isCompositionEnabled()— 조합(composition) 활성화 여부를 설정·조회해요.reconvert()— 재변환 요청을 해요.dispatchEvent(AWTEvent)— 입력 방식과 클라이언트 컴포넌트 간 이벤트를 디스패치해요.removeNotify(Component)— 지정한 컴포넌트에서 입력 컨텍스트를 해제해요.dispose()— 입력 컨텍스트를 정리해요.
한글·일본어·중국어처럼 문자 수가 많은 언어의 입력 방식을 다룰 때 유용해요.