- 所有已知的子接口:
InputMethodContext
public interface InputMethodRequests
InputMethodRequests 定义文本编辑组件必须处理的请求才能使用输入方法。组件可以自己实现这个接口,或者使用一个单独的对象来实现它。实现此接口的对象必须从组件的 getInputMethodRequests 方法返回。
文本编辑组件还必须提供输入方法事件监听。
该界面旨在支持两个输入用户界面之一:
- on-the-spot 输入,其中组合文本显示为文本组件文本正文的一部分。
- below-the-spot input,其中组合文本显示在单独的组合窗口中,就在插入点下方,提交时将插入文本。请注意,如果在组件的文本正文中选择了文本,则该文本将在提交时被提交的文本替换;因此,它不被视为输入文本的上下文的一部分。
- 自从:
- 1.2
- 参见:
-
方法总结
修饰符和类型方法描述从文本编辑组件获取最新提交的文本,并将其从组件的文本正文中移除。getCommittedText(int beginIndex, int endIndex, AttributedCharacterIterator.Attribute[] attributes) 获取一个迭代器,该迭代器提供对文本编辑组件中包含的整个文本和属性的访问,未提交的文本除外。int获取文本编辑组件中包含的整个文本的长度,未提交(组合)的文本除外。int获取文本编辑组件包含的提交文本中插入位置的偏移量。getLocationOffset(int x, int y) 获取屏幕上指定绝对 x 和 y 坐标的组合文本内的偏移量。getSelectedText(AttributedCharacterIterator.Attribute[] attributes) 从文本编辑组件中获取当前选中的文本。getTextLocation(TextHitInfo offset) 获取当前组合文本中指定偏移量的位置,或已提交文本中所选内容的位置。
-
方法详情
-
getTextLocation
获取当前组合文本中指定偏移量的位置,或已提交文本中所选内容的位置。例如,此信息用于将候选窗口定位在合成文本附近,或将合成窗口定位在将插入提交文本的位置附近。如果组件有复合文本(因为发送给它的最新 InputMethodEvent 包含复合文本),则偏移量是相对于复合文本的 - 偏移量 0 表示复合文本中的第一个字符。返回的位置应该是针对这个角色的。
如果组件没有组合文本,则应忽略偏移量,返回的位置应反映包含所选文本的最后一行中突出显示的开始(沿行方向)。例如,对于从左到右的水平文本(如英语),返回包含所选文本的最后一行最左边字符左侧的位置。对于从上到下的垂直文本,行从右到左,返回包含所选文本的最左边行的顶部位置。
该位置表示为 0 粗细插入符号,即如果文本是水平绘制的,它的宽度是 0,如果文本是垂直绘制的,它的高度是 0。其他文本方向需要映射到水平或垂直方向。矩形使用绝对屏幕坐标。
- 参数:
offset- 组合文本内的偏移量,如果有组合文本;否则为空- 返回:
- 表示偏移量的屏幕位置的矩形
-
getLocationOffset
获取屏幕上指定绝对 x 和 y 坐标的组合文本内的偏移量。例如,此信息用于处理鼠标点击和鼠标光标。偏移量是相对于组合文本的,因此偏移量 0 表示组合文本的开头。如果位置在组合文本占用的区域之外,则返回 null。
- 参数:
x- 屏幕上的绝对 x 坐标y- 屏幕上的绝对 y 坐标- 返回:
- 描述组合文本中偏移量的文本命中信息。
-
getInsertPositionOffset
int getInsertPositionOffset()获取文本编辑组件包含的提交文本中插入位置的偏移量。这是插入通过输入方法输入的字符的偏移量。此信息由输入方法使用,例如,检查插入位置周围的文本。- 返回:
- 插入位置的偏移量
-
getCommittedText
AttributedCharacterIterator getCommittedText(int beginIndex, int endIndex, AttributedCharacterIterator.Attribute [] attributes) 获取一个迭代器,该迭代器提供对文本编辑组件中包含的整个文本和属性的访问,未提交的文本除外。索引计算应忽略未提交的(组合的)文本,并且不应通过迭代器访问。输入方法可以提供它感兴趣的属性列表。在这种情况下,实现者可能拥有的其他属性的信息不需要通过迭代器访问。如果该列表为空,则应使所有可用的属性信息都可访问。
- 参数:
beginIndex- 第一个字符的索引endIndex- 最后一个字符之后的字符索引attributes- 输入法感兴趣的属性列表- 返回:
- 提供对文本及其属性的访问的迭代器
-
getCommittedTextLength
int getCommittedTextLength()获取文本编辑组件中包含的整个文本的长度,未提交(组合)的文本除外。- 返回:
- 文本的长度,未提交的文本除外
-
cancelLatestCommittedText
AttributedCharacterIterator cancelLatestCommittedText(AttributedCharacterIterator.Attribute [] attributes) 从文本编辑组件获取最新提交的文本,并将其从组件的文本正文中移除。这用于某些输入方法中的“撤消提交”功能,其中提交的文本恢复到其先前的组合状态。组合文本将使用 InputMethodEvent 发送到组件。一般来说,这个特性应该只在文本提交后立即被支持,而不是在用户对文本进行其他操作之后。当不支持该特性时,返回 null。
输入方法可以提供它感兴趣的属性列表。在这种情况下,实现者可能拥有的其他属性的信息不需要通过迭代器访问。如果该列表为空,则应使所有可用的属性信息都可访问。
- 参数:
attributes- 输入法感兴趣的属性列表- 返回:
- 最新提交的文本,如果不支持“撤消提交”功能,则为 null
-
getSelectedText
从文本编辑组件中获取当前选中的文本。这可以用于多种目的。其中之一是某些输入方法中的“重新转换”功能。在这种情况下,输入方法通常会发送一个输入方法事件,以用组合文本替换所选文本。根据输入方法的功能,这可能是选定文本的原始组合文本、在文本中任意位置输入的最新组合文本,或者从选定文本转换回的文本版本。输入方法可以提供它感兴趣的属性列表。在这种情况下,实现者可能拥有的其他属性的信息不需要通过迭代器访问。如果该列表为空,则应使所有可用的属性信息都可访问。
- 参数:
attributes- 输入法感兴趣的属性列表- 返回:
- 当前选择的文本
-