public class InputContext extends Object
默认情况下,每个Window实例创建一个InputContext实例,并且该输入上下文由窗口容器层次结构中的所有组件共享。 但是,这意味着只有一个文本输入操作可以在窗口内的任何一个时间进行,并且当将焦点从一个文本组件移动到另一个文本组件时,需要提交文本。 如果不需要,文本组件可以创建自己的输入上下文实例。
Java Platform支持使用Java编程语言开发的输入法,使用java.awt.im.spi
包中的接口 ,并将其作为扩展安装到Java SE运行时环境中。 实施还可以支持使用他们运行的平台的本机输入方法; 然而,并不是所有的平台和区域设置都提供输入法。 键盘布局由主机平台提供。
如果(a)用Java编程语言没有任何输入法已经安装和(b)的Java平台实现或基础平台不支持本机输入法输入法是不可用的 。 在这种情况下,仍然可以创建和使用输入上下文; 他们的行为是用以下各种方法指定的。
Component.getInputContext()
,
Component.enableInputMethods(boolean)
Modifier | Constructor and Description |
---|---|
protected |
InputContext()
构造一个InputContext。
|
Modifier and Type | Method and Description |
---|---|
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 。
|
public static InputContext getInstance()
public boolean selectInputMethod(Locale locale)
并非所有主机操作系统都提供API来确定当前选定的本地输入法或键盘布局的区域设置,并按区域设置选择本地输入法或键盘布局。 对于不提供此类API的主机操作系统, selectInputMethod
假设主机操作系统提供的本地输入法或键盘布局仅支持系统的默认语言环境。
文本编辑组件可以调用此方法,例如,当用户更改插入点时,用户可以立即继续输入周围文本的语言。
locale
- 所需的新区域。
NullPointerException
- 如果
locale
为空
public Locale getLocale()
InputMethod.getLocale()
方法返回null,则返回null。
并非所有主机操作系统都提供API来确定当前选定的本地输入法或键盘布局的区域设置。 对于不提供此类API的主机操作系统, getLocale
假定主机操作系统提供的所有本地输入法或键盘布局的当前区域设置是系统的默认语言环境。
public void setCharacterSubsets(Character.Subset[] subsets)
subsets
- 可以输入字符的Unicode字符集的子集
public void setCompositionEnabled(boolean enable)
enable
。
允许组合解释组合和控制目的的传入事件的输入法,而禁用的输入法不会解释组合的事件。 但是请注意,无论是否启用事件,事件都将传递给输入法,并且禁用组合的输入方法仍可能将事件解释为控制目的,包括启用或禁用其组合。
对于由主机操作系统提供的输入方法,并不总是能够确定是否支持该操作。 例如,输入法可以仅为一些区域设置组合,而对其他语言环境也不做任何操作。 对于这样的输入方法,这种方法可能不会抛出UnsupportedOperationException
,而且也不影响组合是否启用。
enable
- 是否启用当前输入法的组合
UnsupportedOperationException
- 如果没有可用的当前输入方法或当前输入方法不支持启用/禁用操作
isCompositionEnabled()
public boolean isCompositionEnabled()
true
如果当前的输入法启用了组合;
false
否则
UnsupportedOperationException
- 如果没有当前的输入方法可用或当前输入法不支持检查是否启用了组合
setCompositionEnabled(boolean)
public void reconvert()
InputMethodRequests
方法必须准备好通过输入法处理进一步的信息请求。
的组成和/或承诺的文本将被发送到客户端组件作为序列InputMethodEvent
秒。
如果输入法无法重新转换给定的文本,则文本将返回为InputMethodEvent中的InputMethodEvent
文本。
UnsupportedOperationException
- 如果没有可用的当前输入法或当前输入法不支持重新转换操作。
public void dispatchEvent(AWTEvent event)
event
- 事件
NullPointerException
- 如果
event
为空
public void removeNotify(Component client)
Component.removeNotify
方法调用。
该组件的输入方法的潜在等待输入将被丢弃。
如果没有可用的输入法,则此方法无效。
client
- 客户端组件
NullPointerException
- 如果
client
为空
public void endComposition()
文本编辑组件可以在各种情况下调用这一点,例如当用户移动文本内的插入点(但在组合文本之外)时,或者组件的文本保存到文件或复制到剪贴板时。
public void dispose()
public Object getInputMethodControlObject()
如果没有输入方法可用或当前输入法不提供输入法控制对象,则返回null。