JavaTM Platform
Standard Ed. 6

java.awt.im
클래스 InputContext

java.lang.Object 
  상위를 확장 java.awt.im.InputContext


public class InputContext
extends Object

입력 메소드 및 키보드의 배치 등, 텍스트 입력 기능을 제어하는 메소드를 제공합니다. 다음의 2 개의 메소드가, 입력 메소드와 키보드의 배치의 양쪽 모두를 처리합니다. selectInputMethod 는, 클라이언트 컴퍼넌트가 로케일에 의해 입력 메소드와 키보드의 배치를 선택할 수 있도록(듯이) 합니다. getLocale 는, 클라이언트 컴퍼넌트가 현재의 입력 메소드와 키보드의 배치의 로케일을 취득할 수 있도록(듯이) 합니다. 그 외의 메소드는, 입력 메소드와의 대화를 보다 구체적으로 지원합니다. 이러한 메소드는, 클라이언트 컴퍼넌트가 입력 메소드의 동작을 제어해, 클라이언트 컴퍼넌트로부터 입력 메소드에 이벤트를 발송 할 수 있도록(듯이) 합니다.

디폴트에서는, Window 의 인스턴스 마다 1 개의 InputContext 의 인스턴스가 생성되어 이 입력 문맥은 윈도우의 컨테이너 계층내에 있는 모든 컴퍼넌트에 의해 공유됩니다. 다만, 윈도우내에서는 1 회에 1 개의 텍스트 입력 오퍼레이션만이 가능하고, 텍스트 컴퍼넌트간에 포커스를 이동할 경우에는 텍스트를 확정할 필요가 있습니다. 이것이 바람직하지 않은 경우, 텍스트 컴퍼넌트는 독자적인 입력 문맥 인스턴스를 생성할 수 있습니다.

Java 플랫폼은, Java 프로그램 언어로 개발되어java.awt.im.spi 패키지의 인터페이스를 사용해, 확장 기능으로서 Java SE 실행 환경에 인스톨 되는 입력 메소드를 지원합니다. 또 구현은, 실행하는 플랫폼의 네이티브인 입력 메소드의 사용을 지원할 수 있습니다. 다만, 모든 플랫폼 및 로케일이 입력 메소드를 제공하는 것은 아닙니다. 키보드의 배치는 호스트 플랫폼에 의해 제공됩니다.

입력 메소드는, (a) Java 프로그램 언어로 쓰여진 입력 메소드가 굳이 인스톨 되지 않고, (b) Java 플랫폼 구현 또는 기본이 되는 플랫폼이 네이티브의 입력 메소드를 지원하고 있지 않는 경우는, 「사용할 수 없습니다」. 그 경우에서도, 입력 문맥을 작성해 사용할 수 있습니다. 입력 문맥의 동작은, 아래와 같은 개별 메소드에 의해 지정됩니다.

도입된 버젼:
1.2
관련 항목:
Component.getInputContext() , Component.enableInputMethods(boolean)

생성자 의 개요
protected InputContext ()
          InputContext 를 구축합니다.
 
메소드의 개요
 void dispatchEvent (AWTEvent  event)
          액티브한 입력 메소드에 이벤트를 발송 합니다.
 void dispose ()
          이 입력 문맥으로 사용된 자원을 해제합니다.
 void endComposition ()
          이 문맥으로 현재 진행중의 입력 변환을 종료합니다.
 Object getInputMethodControlObject ()
          현재의 입력 메소드의 제어 객체 또는 null 를 돌려줍니다.
static InputContext getInstance ()
          새로운 InputContext 인스턴스를 돌려줍니다.
 Locale getLocale ()
          현재의 입력 메소드 또는 키보드 배치의 현재의 로케일을 돌려줍니다.
 boolean isCompositionEnabled ()
          현재의 입력 메소드가 변환을 위해서(때문에) 사용 가능한가 어떤가 판별합니다.
 void reconvert ()
          현재의 입력 메소드에 대해, 현재의 클라이언트 컴퍼넌트로부터의 텍스트의 재변환을 요구합니다.
 void removeNotify (Component  client)
          포함 관계의 계층으로부터 클라이언트 컴퍼넌트가 삭제되었는지, 또는 컴퍼넌트로 입력 메소드가 지원되지 않게 된 것을 입력 문맥에 통지합니다.
 boolean selectInputMethod (Locale  locale)
          지정된 로케일을 지원하는 입력 메소드 또는 키보드의 배치를 선택하려고 할 때, 입력 메소드 또는 키보드의 배치가 정상적으로 선택되었는지의 여부를 나타내는 값을 돌려줍니다.
 void setCharacterSubsets (Character.Subset [] subsets)
          이 입력 문맥의 입력 메소드로 입력할 수 있는 Unicode 캐릭터 세트의 부분집합을 설정합니다.
 void setCompositionEnabled (boolean enable)
          파라미터 enable 의 값에 응해, 변환을 위해서(때문에) 현재의 입력 메소드를 사용 가능 또는 불가능하게 합니다.
 
클래스 java.lang. Object 로부터 상속된 메소드
clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
 

생성자 의 상세

InputContext

protected InputContext()
InputContext 를 구축합니다. 이 메소드는, 클라이언트가 InputContext 의 인스턴스를 직접 생성할 수 없게 보호되고 있습니다. 입력 문맥은 getInstance() 를 호출해 가져옵니다.

메소드의 상세

getInstance

public static InputContext  getInstance()
새로운 InputContext 인스턴스를 돌려줍니다.


selectInputMethod

public boolean selectInputMethod(Locale  locale)
지정된 로케일을 지원하는 입력 메소드 또는 키보드의 배치를 선택하려고 할 때, 입력 메소드 또는 키보드의 배치가 정상적으로 선택되었는지의 여부를 나타내는 값을 돌려줍니다. 입력 메소드가 선택될 때까지는, 다음의 순서에 따릅니다.

입력 메소드를 바꾸기 전에, 현재 미확정의 텍스트가 확정됩니다. 요구된 로케일을 지원하는 입력 메소드 또는 키보드의 배치를 사용할 수 없는 경우, false 가 돌려주어집니다.

모든 호스트 operating system가, 현재 선택되고 있는 네이티브의 입력 메소드 또는 키보드의 배치의 로케일을 판정하거나 로케일에 의해 네이티브의 입력 메소드 또는 키보드의 배치를 선택하는 API 를 제공하고 있는 것은 아닙니다. 이러한 API 를 제공하지 않는 호스트 operating system의 경우,selectInputMethod 은 호스트 operating system가 제공하는 네이티브의 입력 메소드 또는 키보드의 배치가, 시스템의 디폴트 로케일만을 지원하는 것이라고 봅니다.

예를 들어, 사용자가 삽입 포인트를 변경하는 경우, 텍스트 편집 컴퍼넌트로부터 이 메소드를 호출하는 것으로, 사용자가 삽입 포인트 전후의 텍스트의 언어로 즉시 입력을 속행할 수 있습니다.

파라미터:
locale - 목적의 새로운 로케일
반환값:
이 호출의 나중에 액티브하게 되는 입력 메소드 또는 키보드의 배치가, 목적의 로케일을 지원하는 경우는 true
예외:
NullPointerException - locale 가 null 의 경우

getLocale

public Locale  getLocale()
현재의 입력 메소드 또는 키보드 배치의 현재의 로케일을 돌려줍니다. 입력 문맥이 현재의 입력 메소드 또는 키보드 배치를 보관 유지하지 않는 경우, 또는 현재의 입력 메소드의 InputMethod.getLocale() 메소드가 null 를 돌려주는 경우, null 가 돌려주어집니다.

모든 호스트 operating system가, 현재 선택되고 있는 네이티브의 입력 메소드 또는 키보드 배치의 로케일을 판정하는 API 를 제공하고 있는 것은 아닙니다. 이러한 API 를 제공하지 않는 호스트 operating system의 경우,getLocale 는, 호스트 operating system가 제공하는 모든 네이티브인 입력 메소드 또는 키보드 배치의 현재의 로케일을, 시스템의 디폴트 로케일이라고 봅니다.

반환값:
현재의 입력 메소드 또는 키보드 배치의 현재의 로케일
도입된 버젼:
1.3

setCharacterSubsets

public void setCharacterSubsets(Character.Subset [] subsets)
이 입력 문맥의 입력 메소드로 입력할 수 있는 Unicode 캐릭터 세트의 부분집합을 설정합니다. 모든 문자를 사용할 수 있는 것을 나타내는 경우는, null 가 건네받습니다. 초기치는 null 입니다. 이 설정은 현재의 입력 메소드와 이 호출을 한 후에 선택되는 입력 메소드에 적용됩니다. 다만, 이 설정을 모든 호스트 입력 메소드에 건네주는 것이 가능한 것은 아니기 때문에, 이 호출만으로는 목적의 결과를 얻을 수 없는 경우도 있습니다. 그 때문에 어플리케이션이 자신으로 문자를 확인할 필요는 남습니다. 사용할 수 있는 입력 메소드가 없는 경우, 이 메소드는 무효입니다.

파라미터:
subsets - 문자 입력에 사용할 수 있는 Unicode 캐릭터 세트의 부분집합

setCompositionEnabled

public void setCompositionEnabled(boolean enable)
파라미터 enable 의 값에 응해, 변환을 위해서(때문에) 현재의 입력 메소드를 사용 가능 또는 불가능하게 합니다.  

변환에 사용할 수 있는 입력 메소드는, 변환과 제어의 2 개의 목적으로, 들어 오는 이벤트를 해석합니다. 그 때, 사용 불가능한 입력 메소드는 변환을 위한 이벤트를 해석하지 않습니다. 다만, 입력 메소드가 사용 가능한가 어떤가에 관계없이, 이벤트는 입력 메소드에게 건네집니다. 또, 변환에 사용 불가능한 입력 메소드여도, 변환을 위해서(때문에) 자신을 사용 가능 또는 사용 불가능하게 하는 등의 제어 목적으로, 이벤트를 해석할 수가 있습니다.  

호스트 operating system에 의해 제공되는 입력 메소드의 경우, 이 조작이 지원되고 있는지 어떤지를 항상 판단할 수 있다고는 할 수 없습니다. 예를 들어, 입력 메소드가 특정의 로케일로 밖에 변환하지 못하고, 다른 로케일에 대해서는 아무것도 실시하지 않는 경우가 있습니다. 그러한 입력 메소드의 경우, 이 메소드가 UnsupportedOperationException 를 throw 하지 않을 가능성이 있습니다만, 변환이 가능한지 어떤지에 영향을 주는 일도 없습니다.

파라미터:
enable - 현재의 입력 메소드를 변환을 위해서(때문에) 사용 가능하게 할지 어떨지
예외:
UnsupportedOperationException - 현재 사용할 수 있는 입력 메소드가 없는지, 혹은 현재의 입력 메소드가, 사용 가능/사용 불가능의 조작을 지원하고 있지 않는 경우
도입된 버젼:
1.3
관련 항목:
isCompositionEnabled()

isCompositionEnabled

public boolean isCompositionEnabled()
현재의 입력 메소드가 변환을 위해서(때문에) 사용 가능한가 어떤가 판별합니다. 변환에 사용할 수 있는 입력 메소드는, 변환과 제어의 2 개의 목적으로, 들어 오는 이벤트를 해석합니다. 그 때, 사용 불가능한 입력 메소드는 변환을 위한 이벤트를 해석하지 않습니다.

반환값:
현재의 입력 메소드가 변환을 위해서(때문에) 사용 가능한 경우는 true, 그렇지 않은 경우는 false
예외:
UnsupportedOperationException - 현재 사용할 수 있는 입력 메소드가 없는지, 혹은 현재의 입력 메소드가, 변환을 위해서(때문에) 사용 가능한가 어떤가의 확인을 지원하고 있지 않는 경우
도입된 버젼:
1.3
관련 항목:
setCompositionEnabled(boolean)

reconvert

public void reconvert()
현재의 입력 메소드에 대해, 현재의 클라이언트 컴퍼넌트로부터의 텍스트의 재변환을 요구합니다. 입력 메소드는,InputMethodRequests.getSelectedText 메소드를 사용해, 재변환하는 텍스트를 클라이언트 컴퍼넌트로부터 가져옵니다. 입력 메소드에 의한 상세 정보의 요구를 처리하기 위해서, 다른 InputMethodRequests 메소드를 준비해 둘 필요가 있습니다. 변환된 텍스트 또는 확정 텍스트, 혹은 그 양쪽 모두가,InputMethodEvent 의 처리로서 클라이언트 컴퍼넌트에 보내집니다. 지정된 텍스트를 입력 메소드가 재변환할 수 없는 경우, 그 텍스트가 InputMethodEvent 의 확정 텍스트로서 돌려주어집니다.

예외:
UnsupportedOperationException - 현재 사용할 수 있는 입력 메소드가 없는지, 혹은 현재의 입력 메소드가 재변환 조작을 지원하고 있지 않는 경우
도입된 버젼:
1.3

dispatchEvent

public void dispatchEvent(AWTEvent  event)
액티브한 입력 메소드에 이벤트를 발송 합니다. AWT 에 의해 불려 갑니다. 사용할 수 있는 입력 메소드가 없는 경우, 이벤트는 처리되지 않습니다.

파라미터:
event - 이벤트
예외:
NullPointerException - event 가 null 의 경우

removeNotify

public void removeNotify(Component  client)
포함 관계의 계층으로부터 클라이언트 컴퍼넌트가 삭제되었는지, 또는 컴퍼넌트로 입력 메소드가 지원되지 않게 된 것을 입력 문맥에 통지합니다. 이 메소드는, 일반적으로, 클라이언트 컴퍼넌트의 Component.removeNotify 메소드로부터 불려 갑니다. 이 컴퍼넌트에 대한 입력 메소드로부터의 입력이 보류중의 경우, 그 입력은 파기됩니다. 사용할 수 있는 입력 메소드가 없는 경우, 이 메소드는 무효입니다.

파라미터:
client - 클라이언트 컴퍼넌트
예외:
NullPointerException - client 가 null 의 경우

endComposition

public void endComposition()
이 문맥으로 현재 진행중의 입력 변환을 종료합니다. 플랫폼 및 사용자 설정에 응해, 미확정의 텍스트를 확정 또는 삭제합니다. 텍스트에 대한 변경은 입력 메소드 이벤트를 사용해 액티브한 컴퍼넌트에 통지됩니다. 사용할 수 있는 입력 메소드가 없는 경우, 이 메소드는 무효입니다.

텍스트 편집 컴퍼넌트는, 예를 들어, 사용자가 텍스트내에서 (변환 텍스트의 외부에) 삽입 포인트를 이동했을 때나, 컴퍼넌트의 텍스트가 파일에 보존되거나 클립보드에 카피되었을 때 등, 다양한 상황으로 이 메소드를 호출하는 일이 있습니다.


dispose

public void dispose()
이 입력 문맥으로 사용된 자원을 해제합니다. 호출은, 각 Window 의 디폴트 입력 문맥의 AWT 에 의해 행해집니다. 사용할 수 있는 입력 메소드가 없는 경우, 이 메소드는 무효입니다.


getInputMethodControlObject

public Object  getInputMethodControlObject()
현재의 입력 메소드의 제어 객체 또는 null 를 돌려줍니다. 제어 객체는, 입력 메소드의 동작을 제어하거나 입력 메소드로부터 정보를 취득하는 메소드를 제공합니다. 객체의 형태는 입력 메소드 고유의 클래스입니다. 클라이언트는 기존의 입력 메소드 제어 객체 클래스와 결과를 비교해, 제공되는 메소드를 호출하기 위해서(때문에) 적절한 클래스에 캐스트 할 필요가 있습니다.  

사용할 수 있는 입력 메소드가 없는지, 혹은 현재의 입력 메소드가 입력 메소드 제어 객체를 제공하고 있지 않는 경우, null 가 돌려주어집니다.

반환값:
현재의 입력 메소드의 제어 객체, 또는 null

JavaTM Platform
Standard Ed. 6

버그의 보고와 기능의 요청
한층 더 자세한 API 레퍼런스 및 개발자 문서에 대해서는,Java SE 개발자용 문서를 참조해 주세요. 개발자전용의 상세한 해설, 개념의 개요, 용어의 정의, 버그의 회피책, 및 코드 실례가 포함되어 있습니다.

Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms . Documentation Redistribution Policy 도 참조해 주세요.