JavaTM 2 Platform
Standard Ed. 6

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,且不會更改自己的行為。

以下情況可調用此方法

參數:
locale - 要輸入的語言環境
返回:
是否支持指定的語言環境
拋出:
NullPointerException - 如果 locale 為 null

getLocale

Locale getLocale()
返回當前的輸入語言環境。異常情況下可能返回 null。

以下情況可調用此方法

返回:
當前的輸入語言環境,或 null

setCharacterSubsets

void setCharacterSubsets(Character.Subset[] subsets)
設置允許此輸入方法進行輸入的 Unicode 字元集的子集。可能會傳入 Null,以指示允許輸入所有字元。

以下情況可調用此方法

參數:
subsets - 可以從其輸入字元的 Unicode 字元集的子集

setCompositionEnabled

void setCompositionEnabled(boolean enable)
啟用或禁用輸入方法的撰寫功能,具體取決於參數 enable 的值。

啟用輸入方法的撰寫功能將出於撰寫和控制目的解釋傳入事件,而禁用的輸入方法不能解釋出於撰寫目的的事件。但要注意:無論輸入方法是啟用還是禁用,事件都會傳到該輸入方法;禁用輸入方法的撰寫功能可能仍會出於控制目的解釋包括為撰寫而啟用或禁用自身在內的事件。

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

以下情況可調用此方法

參數:
enable - 是否啟用輸入方法的撰寫功能
拋出:
UnsupportedOperationException - 如果此輸入方法不支持啟用/禁用操作
另請參見:
isCompositionEnabled()

isCompositionEnabled

boolean isCompositionEnabled()
確定此輸入方法是否已啟用。啟用撰寫功能的輸入方法將出於撰寫和控制目的解釋傳入事件,而禁用的輸入方法不會出於撰寫目的解釋事件。

以下情況可調用此方法

返回:
如果為進行撰寫啟用了此輸入方法,則返回 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 方法,則會臨時掛起對此方法的調用;當新的客戶端元件啟動此輸入方法時,將恢復此方法的調用。將在以下情形調用此方法:

參數:
bounds - 螢幕上客戶端視窗的 bounds;如果客戶端視窗已圖標化或不可見,則為 null

activate

void activate()
啟動輸入方法,以便立即進行輸入處理。

如果某種輸入方法提供了自己的視窗,則此時它應確保所有必要的視窗都已打開並可見。

以下情況可調用此方法

只有當輸入方法處於非活動狀態時才能調用該方法。假定新實例化的輸入方法處於非活動狀態。


deactivate

void deactivate(boolean isTemporary)
讓輸入方法處於非活動狀態。isTemporary 參數與 FocusEvent.isTemporary 中的參數含義相同。

如果輸入方法提供了自己的視窗,則此時只應關閉與當前撰寫功能相關的視窗(如尋找選擇視窗)。該輸入方法有可能被另一個客戶端元件再次啟動,並且關閉或重新打開較穩定的視窗(如控制面板)可能會造成不必要的螢幕閃爍。在啟動另一種輸入方法類別的實例之前,當前輸入方法將調用 hideWindows()

以下情況可調用此方法

只有當輸入方法處於活動狀態時才能調用該方法。

參數:
isTemporary - 焦點更改是否為臨時的

hideWindows

void hideWindows()
關閉或隱藏由此輸入方法實例或其類別打開的所有視窗。

以下情況可調用此方法

只有當輸入方法處於非活動狀態時才能調用該方法。


removeNotify

void removeNotify()
通知輸入方法已從客戶端元件所在容器層次結構中移除該客戶端元件,或通知它該元件已禁用輸入方法支持。

可由 InputContext.removeNotify 調用此方法。

只有當輸入方法處於非活動狀態時才能調用該方法。


endComposition

void endComposition()
結束當前可能在此上下文中正進行的任何輸入撰寫。這樣做可能會提交或刪除未提交的文本,具體取決於平臺和使用者可能做出的首選項。使用一個輸入方法事件可將對文本的任何更改傳送到處於活動狀態的元件。

編輯元件的文本可以在各種情況下調用此方法,例如,使用者可在文本內(但在撰寫文本外)移動插入點時,或者在將元件的文本保存到檔案上或複製到粘貼板上時都可調用。

以下情況可調用此方法


dispose

void dispose()
釋放由此輸入方法使用的資源。特別要提出的是,輸入方法應釋放視窗並關閉不再需要的檔案。

可由 InputContext.dispose 調用此方法。

只有當輸入方法處於非活動狀態時才能調用該方法。釋放之後,就無法針對此實例調用該介面的方法了。


getControlObject

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

可由 InputContext.getInputMethodControlObject 調用此方法。

返回:
此輸入方法的一個控制物件,或 null

JavaTM 2 Platform
Standard Ed. 6

提交錯誤或意見

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