JavaTM 2 Platform
Standard Ed. 6

java.awt.im
類別 InputContext

java.lang.Object
  繼承者 java.awt.im.InputContext

public class InputContext
extends Object

提供控制諸如輸入方法和鍵盤佈局之類別的文本輸入設施的方法。兩種方法可以處理輸入方法和鍵盤佈局:selectInputMethod 讓客戶端元件根據語言環境選擇輸入方法或鍵盤佈局;getLocale 讓客戶端元件獲得當前輸入方法或鍵盤佈局的語言環境。其他方法更明確地支持與輸入方法之間的交互:它們讓客戶端元件控制輸入方法的行為,並將客戶端元件中的事件指派到該輸入方法。

在預設情況下,每個 Window 實例創建一個 InputContext 實例,並且視窗的容器層次結構內部所有元件都共享此輸入上下文。不過,這意味著在一個視窗中每一次只能進行一項文本輸入操作,並且該文本需要在將焦點從一個文本元件中移到另一文本元件時提交。如果不需要此項操作,則文本元件可以創建自己的輸入上下文實例。

Java 平臺支持使用 java.awt.im.spi 套件中的介面在 Java 程式語言中開發而且作為擴展安裝在 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。

不是所有主機作業系統都提供 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 的值啟用或禁用當前輸入方法進行撰寫。

撰寫中已啟用的輸入方法將解釋用於撰寫和控制的傳入事件,而禁用的輸入方法不會解釋用於撰寫的事件。但要注意,不管是否已啟用該輸入方法,都要將事件傳入其中;已禁用進行撰寫的輸入方法可能仍會因控制目的而解釋事件,包括啟用或禁用自身進行撰寫。

因為輸入方法是由主機作業系統提供的,所以可能無法一直確定是否支持此項操作。例如,一個輸入方法可能只對某些語言環境啟用撰寫,而對另一些語言環境不執行任何操作。對於此類別輸入方法,此方法可能不會拋出 UnsupportedOperationException,並且也不會影響是否已啟用撰寫。

參數:
enable - 是否啟用撰寫的當前輸入方法
拋出:
UnsupportedOperationException - 如果沒有當前可用的輸入方法或當前輸入方法不支持啟用/禁用操作
從以下版本開始:
1.3
另請參見:
isCompositionEnabled()

isCompositionEnabled

public boolean isCompositionEnabled()
確定是否已啟用當前輸入方法以進行撰寫。撰寫中已啟用的輸入方法將解釋用於撰寫和控制的傳入事件,而禁用的輸入方法不會解釋用於撰寫的事件。

返回:
如果當前輸入方法已啟用撰寫,則返回 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()
釋放由此輸入上下文使用過的資源。由 AWT 調用,用於每個 Window 的預設輸入上下文。如果沒有可用的輸入方法,則此方法不起作用。


getInputMethodControlObject

public Object getInputMethodControlObject()
返回當前輸入方法中的一個控制物件,或 null。控制物件提供了控制該輸入方法的行為或從該輸入方法獲得資訊的方法。物件的型別是輸入方法的特定類別。客戶端必須將其結果與已知輸入方法的控制物件類別進行對比,並強制轉換為適當的類別,以調用所提供的方法。

如果沒有可用的輸入方法,或當前輸入方法沒有提供輸入方法控制物件,則返回 null。

返回:
當前輸入方法中的一個控制物件,或 null。

JavaTM 2 Platform
Standard Ed. 6

提交錯誤或意見

版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only