输入法框架可以加载InputMethod的子类;然后可以通过 API (InputContext.selectInputMethod
) 或用户界面(输入法选择菜单)选择它们。
- 自从:
- 1.3
-
方法总结
修饰符和类型方法描述void
activate()
激活用于即时输入处理的输入方法。void
deactivate
(boolean isTemporary) 停用输入方法。void
dispatchEvent
(AWTEvent event) 将事件分派到输入方法。void
dispose()
释放该输入方法占用的资源。void
结束当前可能在此上下文中进行的任何输入合成。从此输入方法返回一个控件对象,或为 null。返回当前输入locale。void
关闭或隐藏由此输入方法实例或其类打开的所有窗口。boolean
确定是否启用此输入方法。void
notifyClientWindowChange
(Rectangle bounds) 通知此输入方法客户端窗口位置或状态的更改。void
开始重新转换操作。void
通知输入方法客户端组件已从其包含层次结构中删除,或者该组件的输入方法支持已被禁用。void
setCharacterSubsets
(Character.Subset[] subsets) 设置允许该输入方法输入的Unicode字符集的子集。void
setCompositionEnabled
(boolean enable) 根据参数enable
的值启用或禁用此输入法进行组合。void
setInputMethodContext
(InputMethodContext context) 设置输入方法上下文,用于将输入方法事件分派给客户端组件并从客户端组件请求信息。boolean
尝试设置输入locale。
-
方法详情
-
setInputMethodContext
设置输入方法上下文,用于将输入方法事件分派给客户端组件并从客户端组件请求信息。在实例化此输入方法后立即调用一次此方法。
- 参数:
context
- 此输入法的输入法上下文- 抛出:
NullPointerException
- 如果context
为空
-
setLocale
尝试设置输入locale。如果输入方法支持所需的locale,它会更改其行为以支持locale的输入并返回 true。否则,它返回 false 并且不改变它的行为。这个方法叫做
- 通过
InputContext.selectInputMethod
, - 如果用户指定了区域设置或如果先前选择的输入法的
getLocale
方法返回非空值,则通过用户界面切换到此输入法时。
- 参数:
locale
- 输入locale- 返回:
- 是否支持指定的locale
- 抛出:
NullPointerException
- 如果locale
为空
- 通过
-
getLocale
Locale getLocale()返回当前输入locale。在特殊情况下可能会返回 null。这个方法叫做
- 通过
InputContext.getLocale
和 - 通过用户界面从这种输入方法切换到另一种输入方法时。
- 返回:
- 当前输入locale,或 null
- 通过
-
setCharacterSubsets
设置允许该输入方法输入的Unicode字符集的子集。可以传入 Null 以指示允许所有字符。这个方法叫做
- 实例化此输入方法后,
- 从其他输入方法切换到此输入方法时,以及
- 通过
InputContext.setCharacterSubsets
。
- 参数:
subsets
- 可以从中输入字符的 Unicode 字符集的子集
-
setCompositionEnabled
void setCompositionEnabled(boolean enable) 根据参数enable
的值启用或禁用此输入法进行组合。为组合启用的输入方法会为组合和控制目的解释传入事件,而禁用的输入方法则不会为组合解释事件。但是请注意,无论输入方法是否启用,事件都会传递给输入方法,并且为组合禁用的输入方法仍可能出于控制目的解释事件,包括为组合启用或禁用自身。
对于主机操作系统提供的输入法,并不总是能够确定是否支持该操作。例如,输入法可能只对某些locale启用组合,而对其他locale不执行任何操作。对于这样的输入法,有可能这个方法不会抛出
UnsupportedOperationException
,也不影响是否启用组合。这个方法叫做
- 通过
InputContext.setCompositionEnabled
, - 当使用用户界面或
InputContext.selectInputMethod
从不同的输入法切换到此输入法时,如果先前选择的输入法的isCompositionEnabled
方法返回而没有抛出异常。
- 参数:
enable
- 是否启用输入法进行合成- 抛出:
UnsupportedOperationException
- 如果此输入法不支持启用/禁用操作- 参见:
- 通过
-
isCompositionEnabled
boolean isCompositionEnabled()确定是否启用此输入方法。为组合启用的输入方法会为组合和控制目的解释传入事件,而禁用的输入方法则不会为组合解释事件。这个方法叫做
- 通过
InputContext.isCompositionEnabled
和 - 使用用户界面或
InputContext.selectInputMethod
从这种输入法切换到另一种输入法时。
- 返回:
true
如果此输入法启用组合;false
否则。- 抛出:
UnsupportedOperationException
- 如果此输入法不支持检查是否启用了组合- 参见:
- 通过
-
reconvert
void reconvert()开始重新转换操作。输入法使用InputMethodRequests.getSelectedText
方法从当前客户端组件获取要重新转换的文本。它可以使用其他InputMethodRequests
方法来请求重新转换操作所需的其他信息。操作生成的组合和提交文本作为InputMethodEvent
序列发送到客户端组件。如果无法重新转换给定的文本,则应将相同的文本作为提交的文本发送到客户端组件。此方法由
InputContext.reconvert
调用。- 抛出:
UnsupportedOperationException
- 如果输入法不支持再转换操作。
-
dispatchEvent
将事件分派到输入法。如果为焦点组件启用了输入法支持,某些类型的传入事件在被分派到组件的方法或事件监听器之前被分派到该组件的当前输入法。输入法决定是否需要处理该事件。如果是,它还会调用事件的consume
方法;这会导致事件不会被分派到组件的事件处理方法或事件监听器。如果事件是 InputEvent 或其子类的实例,则事件将被调度。这包括 AWT 类 KeyEvent 和 MouseEvent 的实例。
此方法由
InputContext.dispatchEvent
调用。- 参数:
event
- 被分派到输入法的事件- 抛出:
NullPointerException
- 如果event
为空
-
notifyClientWindowChange
通知此输入法客户端窗口位置或状态的更改。当此输入法是其输入上下文的当前输入法并启用通知时调用此方法(请参阅InputMethodContext.enableClientWindowNotification
)。如果调用输入上下文的removeNotify
方法,则暂时挂起对该方法的调用,并在为新的客户端组件激活输入法时恢复。它在以下情况下被调用:- 当包含当前客户端组件的窗口在位置、大小、可见性、图标化状态或窗口关闭时发生变化。
- 从
enableClientWindowNotification(inputMethod, true)
如果当前客户端组件存在, - 在调用
enableClientWindowNotification(inputMethod, true)
后首次激活输入法时,如果在调用期间没有当前客户端组件可用, - 在调用输入上下文的 removeNotify 方法后激活新客户端组件的输入方法时。
- 参数:
bounds
- 客户端窗口的bounds
在屏幕上;如果客户端窗口图标化或不可见,则为 null
-
activate
void activate()激活用于即时输入处理的输入方法。如果输入方法提供自己的窗口,此时应确保所有必要的窗口都已打开且可见。
这个方法叫做
- 通过
InputContext.dispatchEvent
当客户端组件接收到 FOCUS_GAINED 事件时, - 使用用户界面或
InputContext.selectInputMethod
从不同的输入法切换到此输入法时。
- 通过
-
deactivate
void deactivate(boolean isTemporary) 停用输入法。 isTemporary 参数与FocusEvent.isTemporary
中的含义相同。如果输入法提供了自己的窗口,那么此时只应关闭与当前组合相关的窗口(例如查找选择窗口)。对于不同的客户端组件,输入法可能会立即再次激活,并且关闭和重新打开更持久的窗口(例如控制面板)会产生不必要的屏幕闪烁。在激活不同输入法类的实例之前,
hideWindows()
在当前输入法上被调用。这个方法叫做
- 通过
InputContext.dispatchEvent
当客户端组件接收到 FOCUS_LOST 事件时, - 当使用用户界面或
InputContext.selectInputMethod
从这种输入法切换到另一种输入法时, - 如果删除了当前客户端组件,则在
removeNotify
之前。
- 参数:
isTemporary
- 焦点变化是否是暂时的
- 通过
-
hideWindows
void hideWindows() -
removeNotify
void removeNotify()通知输入方法客户端组件已从其包含层次结构中删除,或者该组件的输入方法支持已被禁用。此方法由
InputContext.removeNotify
调用。该方法仅在输入方法处于非活动状态时调用。
-
endComposition
void endComposition()结束当前可能在此上下文中进行的任何输入合成。根据平台和可能的用户偏好,这可能会提交或删除未提交的文本。对文本的任何更改都会使用输入方法事件传达给活动组件。文本编辑组件可以在多种情况下调用它,例如,当用户在文本内(但在组合文本外)移动插入点时,或者当组件的文本保存到文件或复制到剪贴板时。
这个方法叫做
- 通过
InputContext.endComposition
, - 通过
InputContext.dispatchEvent
切换到不同的客户端组件时 - 使用用户界面或
InputContext.selectInputMethod
从这种输入法切换到另一种输入法时。
- 通过
-
dispose
void dispose()释放该输入方法占用的资源。特别是,输入方法应该处理窗口并关闭不再需要的文件。此方法由
InputContext.dispose
调用。该方法仅在输入方法处于非活动状态时调用。 dispose 之后,不会在此实例上调用此接口的任何方法。
-
getControlObject
Object getControlObject()从此输入方法返回一个控件对象,或为 null。控制对象提供控制输入方法行为或从输入方法获取信息的方法。对象的类型是输入方法特定的类。客户端必须将结果与已知的输入方法控制对象类进行比较,并转换为适当的类以调用所提供的方法。- 返回:
- 来自此输入方法的控制对象,或 null
-