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

インタフェースInputMethod


public interface InputMethod
複合テキスト入力をサポートするインプット・メソッドのためのインタフェースを定義します。 従来より、インプット・メソッドは、中国語、日本語、韓国語など、標準サイズのキーボードでは表現できない文字が多数存在する言語でのテキスト入力をサポートしています。 これらのインプット・メソッドは、英語の音声テキスト入力、またはタイ語の文字再順序付けのサポートにも使用されます。

InputMethodのサブクラスは、インプット・メソッド・フレームワークでロードしてから、API (InputContext.selectInputMethod)またはユーザー・インタフェース(入力方式の切替えメニュー)を通じて選択できます。

導入されたバージョン:
1.3
  • メソッドのサマリー

    修飾子と型 メソッド 説明
    void activate()
    即時入力処理のためのインプット・メソッドを起動します。
    void deactivate​(boolean isTemporary)
    インプット・メソッドを終了します。
    void dispatchEvent​(AWTEvent event)
    インプット・メソッドにイベントをディスパッチします。
    void dispose()
    このインプット・メソッドで使用されたリソースを解放します。
    void endComposition()
    このコンテキストで現在進行中の入力変換を終了します。
    Object getControlObject()
    このインプット・メソッドの制御オブジェクトまたはnullを返します。
    Locale getLocale()
    現在の入力ロケールを返します。
    void hideWindows()
    このインプット・メソッドのインスタンスまたはクラスが開いたすべてのウィンドウを閉じるか、隠します。
    boolean isCompositionEnabled()
    このインプット・メソッドが使用可能かどうか判別します。
    void notifyClientWindowChange​(Rectangle bounds)
    クライアントのウィンドウ位置または状態の変更を、このインプット・メソッドに通知します。
    void reconvert()
    再変換操作を開始します。
    void removeNotify()
    クライアント・コンポーネントが包含関係の階層から削除されているか、またはインプット・メソッドがそのコンポーネントで使用できなくなっていることを、インプット・メソッドに通知します。
    void setCharacterSubsets​(Character.Subset[] subsets)
    このインプット・メソッドで入力可能なUnicode文字セットのサブセットを設定します。
    void setCompositionEnabled​(boolean enable)
    パラメータenableの値に応じて、変換のインプット・メソッドを使用可能または使用不可能にします。
    void setInputMethodContext​(InputMethodContext context)
    インプット・メソッド・イベントのクライアント・コンポーネントへのディスパッチ、およびクライアント・コンポーネントからの情報の要求に使用する、インプット・メソッドのコンテキストを設定します。
    boolean setLocale​(Locale locale)
    入力ロケールの設定を試みます。
  • メソッドの詳細

    • setInputMethodContext

      void setInputMethodContext​(InputMethodContext context)
      インプット・メソッド・イベントのクライアント・コンポーネントへのディスパッチ、およびクライアント・コンポーネントからの情報の要求に使用する、インプット・メソッドのコンテキストを設定します。

      このメソッドは、インプット・メソッドのインスタンスを生成するとすぐに呼び出されます。

      パラメータ:
      context - このインプット・メソッド用のインプット・メソッド・コンテキスト
      例外:
      NullPointerException - contextがnullである場合
    • setLocale

      boolean setLocale​(Locale locale)
      入力ロケールの設定を試みます。 インプット・メソッドが目的のロケールをサポートしている場合、このメソッドはその動作を変更してロケールに対する入力をサポートし、trueを返します。 そうでない場合は、falseを返して動作の変更を行いません。

      このメソッドは、次の場合に呼び出されます。

      • InputContext.selectInputMethodによって、
      • ユーザーがロケールを指定したか、あるいは以前に選択済みのインプット・メソッドのgetLocaleメソッドがnullでない値を返す場合に、ユーザー・インタフェースを使ってこのインプット・メソッドに切り替えるとき。

      パラメータ:
      locale - 入力するロケール
      戻り値:
      指定されたロケールがサポートされているかどうか
      例外:
      NullPointerException - localeがnullである場合
    • getLocale

      Locale getLocale()
      現在の入力ロケールを返します。 例外クラスの場合は、nullを返すことがあります。

      このメソッドは、次の場合に呼び出されます。

      • InputContext.getLocaleによって、および
      • ユーザー・インタフェースを使って、このインプット・メソッドから別のインプット・メソッドに切り替えるとき

      戻り値:
      現在の入力ロケール、またはnull
    • setCharacterSubsets

      void setCharacterSubsets​(Character.Subset[] subsets)
      このインプット・メソッドで入力可能なUnicode文字セットのサブセットを設定します。 すべての文字が使用できることを示す場合は、nullが渡されます。

      このメソッドは、次の場合に呼び出されます。

      • このインプット・メソッドのインスタンスを生成した直後
      • 別のインプット・メソッドからこのインプット・メソッドに切り替えるとき
      • InputContext.setCharacterSubsetsにより。

      パラメータ:
      subsets - 文字入力に使用できるUnicode文字セットのサブセット
    • setCompositionEnabled

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

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

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

      このメソッドは、次の場合に呼び出されます。

      パラメータ:
      enable - 変換用のインプット・メソッドを使用可能にするかどうか
      例外:
      UnsupportedOperationException - このインプット・メソッドが、使用可能/使用不可能の操作をサポートしていない場合
      関連項目:
      isCompositionEnabled()
    • isCompositionEnabled

      boolean isCompositionEnabled()
      このインプット・メソッドが使用可能かどうか判別します。 変換に使用できるインプット・メソッドは、変換と制御の2つの目的で、入ってくるイベントを解釈します。そのとき、使用不可能なインプット・メソッドは変換のためのイベントを解釈しません。

      このメソッドは、次の場合に呼び出されます。

      戻り値:
      このインプット・メソッドが変換のために使用可能な場合はtrue、そうでない場合はfalse
      例外:
      UnsupportedOperationException - このインプット・メソッドが、変換のために使用可能かどうかの確認をサポートしていない場合
      関連項目:
      setCompositionEnabled(boolean)
    • reconvert

      void reconvert()
      再変換操作を開始します。 インプット・メソッドは、InputMethodRequests.getSelectedTextメソッドを使って、現在のクライアント・コンポーネントから再変換するテキストを取得します。 このメソッドは、ほかのInputMethodRequestsメソッドを使って再変換操作に必要な追加情報を要求できます。 この操作によって変換し、確定したテキストは、クライアント・コンポーネントにInputMethodEventのシーケンスとして送られます。 指定されたテキストが再変換できない場合は、同一のテキストを確定テキストとしてクライアント・コンポーネントに送る必要があります。

      このメソッドはInputContext.reconvertにより呼び出されます。

      例外:
      UnsupportedOperationException - このインプット・メソッドが、再変換操作をサポートしていない場合。
    • dispatchEvent

      void dispatchEvent​(AWTEvent event)
      インプット・メソッドにイベントをディスパッチします。 フォーカスされたコンポーネントに対して入力メソッドのサポートが有効になっている場合、特定の型の着信イベントは、コンポーネント・メソッドまたはイベント・リスナーにディスパッチされる前に、このコンポーネントの現在の入力メソッドにディスパッチされます。 インプット・メソッドは、そのメソッドがイベントを処理する必要があるかどうかを決定します。 処理する必要がある場合は、イベントのconsumeメソッドも呼び出します。これにより、イベントはそのコンポーネントのイベント処理メソッドまたはイベント・リスナーにディスパッチされなくなります。

      イベントは、InputEventまたはそのサブクラスのインスタンスの場合にディスパッチされます。 これには、AWTクラスのKeyEventおよびMouseEventのインスタンスが含まれます。

      このメソッドはInputContext.dispatchEventにより呼び出されます。

      パラメータ:
      event - インプット・メソッドにディスパッチされるイベント
      例外:
      NullPointerException - eventがnullである場合
    • notifyClientWindowChange

      void notifyClientWindowChange​(Rectangle bounds)
      クライアントのウィンドウ位置または状態の変更を、このインプット・メソッドに通知します。 このメソッドは、このインプット・メソッドが入力コンテキストで現在使用されているインプット・メソッドであり、このメソッドに対する通知が使用可能である場合に呼び出されます(InputMethodContext.enableClientWindowNotificationを参照)。 入力コンテキストのremoveNotifyメソッドが呼び出されると、このメソッドの呼出しは一時的に保留され、新規のクライアント・コンポーネントがインプット・メソッドを起動すると再開されます。 このメソッドは次の場合に呼び出されます。
      • 現在のクライアント・コンポーネントを含むウィンドウの位置、サイズ、可視性、アイコンの表示状態が変更されたときか、このウィンドウが閉じられたとき
      • 現在のクライアント・コンポーネントが存在する場合は、enableClientWindowNotification(inputMethod, true)から
      • 呼出し中に現在のクライアント・コンポーネントが使用できない場合、enableClientWindowNotification(inputMethod, true)の呼出し後に、最初にインプット・メソッドを起動するとき
      • 入力コンテキストのremoveNotifyメソッドの呼出し後に、新規クライアント・コンポーネントのインプット・メソッドを起動するとき
      パラメータ:
      bounds - 画面上のクライアント・ウィンドウのbounds。クライアント・ウィンドウがアイコン化されるか、不可視の場合はnull
    • activate

      void activate()
      即時入力処理のためのインプット・メソッドを起動します。

      インプット・メソッドが独自のウィンドウを所有する場合、この時点で、すべての必要なウィンドウが開いており可視であることを確認する必要があります。

      このメソッドは、次の場合に呼び出されます。

      • クライアント・コンポーネントがFOCUS_GAINEDイベントを受け取る際に、InputContext.dispatchEventにより
      • ユーザー・インタフェースまたはInputContext.selectInputMethodを使って、別のインプット・メソッドからこのインプット・メソッドに切り替えるとき。
      このメソッドは、インプット・メソッドが停止している場合にだけ呼び出されます。 新たにインスタンスが生成されたインプット・メソッドは停止しているものと見なされます。

    • deactivate

      void deactivate​(boolean isTemporary)
      インプット・メソッドを終了します。 isTemporary引数はFocusEvent.isTemporaryの引数と同じ意味を持ちます。

      インプット・メソッドが独自のウィンドウを所有する場合、ルックアップ選択ウィンドウなど現在の変換に関連するウィンドウのみが、ここで閉じられます。 このインプット・メソッドを、別のクライアント・コンポーネントのためにすぐに再起動することも可能ですが、コントロール・パネルなどのより持続的なウィンドウを閉じたりふたたび開いたりすると、不必要な画面フリッカが生成されます。 別のインプット・メソッド・クラスのインスタンスを起動する場合は、その前にhideWindows()を現在のインプット・メソッドで呼び出します。

      このメソッドは、次の場合に呼び出されます。

      • クライアント・コンポーネントがFOCUS_LOSTイベントを受け取る際に、InputContext.dispatchEventにより
      • ユーザー・インタフェースまたはInputContext.selectInputMethodを使って、このインプット・メソッドから別のインプット・メソッドに切り替えるとき
      • 現在のクライアント・コンポーネントが削除される場合は、removeNotifyが呼び出される前。
      このメソッドは、インプット・メソッドがアクティブな場合にだけ呼び出されます。

      パラメータ:
      isTemporary - フォーカス変更が一時的かどうか
    • hideWindows

      void hideWindows()
      このインプット・メソッドのインスタンスまたはクラスが開いたすべてのウィンドウを閉じるか、隠します。

      このメソッドは、次の場合に呼び出されます。

      • 別のインプット・メソッド・クラスのインスタンスでactivateを呼び出す前
      • このインプット・メソッドでdisposeを呼び出す前。
      このメソッドは、インプット・メソッドが停止している場合にだけ呼び出されます。

    • removeNotify

      void removeNotify()
      クライアント・コンポーネントが包含関係の階層から削除されているか、またはインプット・メソッドがそのコンポーネントで使用できなくなっていることを、インプット・メソッドに通知します。

      このメソッドはInputContext.removeNotifyにより呼び出されます。

      このメソッドは、インプット・メソッドが停止している場合にだけ呼び出されます。

    • endComposition

      void endComposition()
      このコンテキストで現在進行中の入力変換を終了します。 プラットフォームおよびユーザー設定に応じて、未確定のテキストを確定または削除します。 テキストに対する変更はインプット・メソッド・イベントを使用してアクティブなコンポーネントに通知されます。

      テキスト編集コンポーネントは、たとえば、ユーザーがテキスト内で(変換テキストの外部に)挿入ポイントを移動したときや、コンポーネントのテキストがファイルに保存されたり、クリップボードにコピーされたときなど、さまざまな状況でこのメソッドを呼び出すことがあります。

      このメソッドは、次の場合に呼び出されます。

    • dispose

      void dispose()
      このインプット・メソッドで使用されたリソースを解放します。 特に、インプット・メソッドはウィンドウを破棄し、必要がなくなったファイルを閉じる必要があります。

      このメソッドはInputContext.disposeにより呼び出されます。

      このメソッドは、インプット・メソッドが停止している場合にだけ呼び出されます。 破棄したあとに、このインスタンスで呼び出されるこのインタフェースのメソッドはありません。

    • getControlObject

      Object getControlObject()
      このインプット・メソッドの制御オブジェクトまたはnullを返します。 制御オブジェクトは、インプット・メソッドの動作を制御したり、インプット・メソッドから情報を取得するメソッドを提供します。 オブジェクトの型はインプット・メソッド固有のクラスです。 クライアントは既知のインプット・メソッド制御オブジェクト・クラスと結果を比較し、提供されるメソッドを呼び出すために適切なクラスへキャストする必要があります。

      このメソッドはInputContext.getInputMethodControlObjectにより呼び出されます。

      戻り値:
      現在のインプット・メソッドの制御オブジェクト、またはnull