モジュール java.desktop
パッケージ java.awt.im

クラスInputContext


  • public class InputContext
    extends Object
    インプット・メソッドおよびキーボードの配置など、テキスト入力機能を制御するメソッドを提供します。 次の2つのメソッドが、インプット・メソッドとキーボードの配置の両方を処理します。selectInputMethodは、クライアント・コンポーネントがロケールによってインプット・メソッドとキーボードの配置を選択できるようにします。getLocaleは、クライアント・コンポーネントが現在のインプット・メソッドとキーボードの配置のロケールを取得できるようにします。 その他のメソッドは、インプット・メソッドとの対話をより具体的にサポートします。これらのメソッドは、クライアント・コンポーネントがインプット・メソッドの動作を制御し、クライアント・コンポーネントからインプット・メソッドにイベントをディスパッチできるようにします。

    デフォルトでは、Windowのインスタンスごとに1つのInputContextのインスタンスが生成され、この入力コンテキストはウィンドウのコンテナ階層内にあるすべてのコンポーネントによって共有されます。 ただし、ウィンドウ内では1回に1つのテキスト入力オペレーションだけが可能であり、テキスト・コンポーネント間でフォーカスを移動するときにはテキストを確定する必要があります。 これが望ましくない場合、テキスト・コンポーネントは独自の入力コンテキスト・インスタンスを生成できます。

    Javaプラットフォームは、java.awt.im.spiパッケージのインタフェースを使用して、Javaプログラミング言語で開発された入力メソッドをサポートしています。これらのインタフェースは、アプリケーション・クラス・パスに追加することで使用できます。 また実装は、実行するプラットフォームのネイティブなインプット・メソッドの使用をサポートできます。ただし、すべてのプラットフォームおよびロケールがインプット・メソッドを提供するわけではありません。 キーボードの配置はホスト・プラットフォームにより提供されます。

    インプット・メソッドは、(a) Javaプログラミング言語で書かれたインプット・メソッドが何もインストールされておらず、(b) Javaプラットフォーム実装または基本となるプラットフォームがネイティブのインプット・メソッドをサポートしていない場合は、使用できません その場合でも、入力コンテキストを作成して使用することはできます。入力コンテキストの動作は、下記の個別メソッドによって指定されます。

    導入されたバージョン:
    1.2
    関連項目:
    Component.getInputContext(), Component.enableInputMethods(boolean)
    • コンストラクタのサマリー

      コンストラクタ 
      修飾子 コンストラクタ 説明
      protected InputContext()
      InputContextを構築します。
    • メソッドのサマリー

      すべてのメソッド staticメソッド インスタンス・メソッド 具象メソッド 
      修飾子と型 メソッド 説明
      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の値に応じて、変換のために現在のインプット・メソッドを使用可能または不可能にします。
    • コンストラクタの詳細

      • InputContext

        protected InputContext()
        InputContextを構築します。 このメソッドは、クライアントがInputContextのインスタンスを直接生成できないよう保護されています。 入力コンテキストはgetInstance()を呼び出して取得します。
    • メソッドの詳細

      • getInstance

        public static InputContext getInstance()
        新しいInputContextインスタンスを返します。
        戻り値:
        新しいInputContextインスタンス
      • selectInputMethod

        public boolean selectInputMethod​(Locale locale)
        指定されたロケールをサポートするインプット・メソッドまたはキーボードの配置を選択しようとするときに、インプット・メソッドまたはキーボードの配置が正常に選択されたかどうかを示す値を返します。 インプット・メソッドが選択されるまでは、次のステップに従います。
        • 現在選択されているインプット・メソッドまたはキーボードの配置が要求されたロケールをサポートする場合、選択された状態のままにします。
        • 要求されたロケールをサポートするインプット・メソッドまたはキーボードの配置が使用できない場合、現在のインプット・メソッドまたはキーボードの配置をそのまま選択します。
        • 以前にユーザーが、要求されたロケールに対するインプット・メソッドまたはキーボードの配置をユーザー・インタフェースから選択した場合、直前に選択したインプット・メソッドまたはキーボードの配置がもう一度選択されます。
        • それ以外の場合は、要求されたロケールをサポートするインプット・メソッドまたはキーボードの配置が実装ごとに異なる方法で選択されます。
        インプット・メソッドを切り替える前に、現在未確定のテキストが確定されます。 要求されたロケールをサポートするインプット・メソッドまたはキーボードの配置が使用できない場合、falseが返されます。

        すべてのホスト・オペレーティング・システムが、現在選択されているネイティブのインプット・メソッドまたはキーボードの配置のロケールを判定したり、ロケールによってネイティブのインプット・メソッドまたはキーボードの配置を選択するAPIを提供しているわけではありません。 このようなAPIを提供しないホスト・オペレーティング・システムの場合、selectInputMethodはホスト・オペレーティング・システムが提供するネイティブのインプット・メソッドまたはキーボードの配置が、システムのデフォルト・ロケールだけをサポートするものと見なします。

        たとえば、ユーザーが挿入ポイントを変更する場合、テキスト編集コンポーネントからこのメソッドを呼び出すことにより、ユーザーが挿入ポイント前後のテキストの言語でただちに入力を続行できます。

        パラメータ:
        locale - 目的の新しいロケール。
        戻り値:
        この呼出しのあとでアクティブになるインプット・メソッドまたはキーボードの配置が、目的のロケールをサポートする場合はtrue
        例外:
        NullPointerException - localeがnullである場合
      • getLocale

        public Locale getLocale()
        現在のインプット・メソッドまたはキーボード配置の現在のロケールを返します。 入力コンテキストが現在のインプット・メソッドまたはキーボード配置を保持しない場合、または現在のインプット・メソッドのInputMethod.getLocale()メソッドがnullを返す場合、nullが返されます。

        すべてのホスト・オペレーティング・システムが、現在選択されているネイティブのインプット・メソッドまたはキーボード配置のロケールを判定するAPIを提供しているわけではありません。 このようなAPIを提供しないホスト・オペレーティング・システムの場合、getLocaleは、ホスト・オペレーティング・システムが提供するすべてのネイティブなインプット・メソッドまたはキーボード配置の現在のロケールを、システムのデフォルト・ロケールと見なします。

        戻り値:
        現在のインプット・メソッドまたはキーボード配置の現在のロケール
        導入されたバージョン:
        1.3
      • setCharacterSubsets

        public void setCharacterSubsets​(Character.Subset[] subsets)
        この入力コンテキストのインプット・メソッドで入力できるUnicode文字セットのサブセットを設定します。 すべての文字が使用できることを示す場合は、nullが渡されます。 初期値はnullです。 この設定は現在のインプット・メソッドと、この呼出しが行われたあとで選択されるインプット・メソッドに適用されます。 ただし、この設定をすべてのホスト・インプット・メソッドに渡すことが可能なわけではないので、この呼び出しだけでは目的の結果が得られない場合もあります。そのためアプリケーションが自身で文字を確認する必要は残ります。 使用できるインプット・メソッドがない場合、このメソッドは無効です。
        パラメータ:
        subsets - 文字入力に使用できるUnicode文字セットのサブセット
      • setCompositionEnabled

        public void setCompositionEnabled​(boolean enable)
        パラメータenableの値に応じて、変換のために現在のインプット・メソッドを使用可能または不可能にします。

        変換に使用できるインプット・メソッドは、変換と制御の2つの目的で、入ってくるイベントを解釈します。そのとき、使用不可能なインプット・メソッドは変換のためのイベントを解釈しません。 ただし、インプット・メソッドが使用可能かどうかに関係なく、イベントはインプット・メソッドに渡されます。また、変換に使用不可能なインプット・メソッドであっても、変換のために自身を使用可能または使用不可能にするなどの制御目的で、イベントを解釈することができます。

        ホスト・オペレーティング・システムによって提供されるインプット・メソッドの場合、この操作がサポートされているかどうかを常に判断できるとは限りません。 たとえば、インプット・メソッドが特定のロケールでしか変換できず、ほかのロケールに対しては何も行わない場合があります。 そうしたインプット・メソッドの場合、このメソッドがUnsupportedOperationExceptionをスローしない可能性がありますが、変換が可能であるかどうかに影響を与えることもありません。

        パラメータ:
        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