模块  java.desktop
软件包  java.awt.im

Interface InputMethodRequests

  • All Known Subinterfaces:
    InputMethodContext

    public interface InputMethodRequests
    InputMethodRequests定义文本编辑组件必须处理的请求才能使用输入方法。 组件可以自己实现此接口,也可以使用实现它的单独对象。 必须从组件的getInputMethodRequests方法返回实现此接口的对象。

    文本编辑组件还必须提供输入方法事件监听器。

    该接口旨在支持两个输入用户界面之一:

    • 现场输入,其中组合文本显示为文本组件的文本正文的一部分。
    • 现场输入,其中组合文本显示在插入点下方的单独组合窗口中,文本将在提交时插入。 请注意,如果在组件的文本正文中选择了文本,则该文本将在承诺时由提交的文本替换; 因此,它不被视为文本输入的上下文的一部分。
    从以下版本开始:
    1.2
    另请参见:
    Component.getInputMethodRequests()InputMethodListener
    • 方法详细信息

      • getTextLocation

        Rectangle getTextLocation​(TextHitInfo offset)
        获取当前组合文本中指定偏移量的位置,或获取提交文本中选定内容的位置。 例如,该信息用于将候选窗口定位在合成文本附近,或者在将插入定义文本的位置附近的合成窗口。

        如果组件具有组合文本(因为发送给它的最新InputMethodEvent包含组合文本),则偏移量相对于组合文本 - 偏移量0表示组合文本中的第一个字符。 返回的位置应该是此角色。

        如果组件没有合成文本,则应忽略偏移,并且返回的位置应反映包含所选文本的最后一行中突出显示的开始(沿行方向)。 例如,对于水平从左到右的文本(例如英语),将返回包含所选文本的最后一行最左侧字符左侧的位置。 对于垂直的从上到下文本,使用从右到左的行,返回包含所选文本的最左侧行顶部的位置。

        该位置表示为0厚度插入符号,即,如果文本是水平绘制,则其宽度为0,如果垂直绘制文本,则为0。 其他文本方向需要映射到水平或垂直方向。 矩形使用绝对屏幕坐标。

        参数
        offset - 组合文本中的偏移量,如果有组合文本; 否则为null
        结果
        表示偏移的屏幕位置的矩形
      • getLocationOffset

        TextHitInfo getLocationOffset​(int x,
                                      int y)
        获取屏幕上指定的绝对x和y坐标的合成文本中的偏移量。 此信息用于处理鼠标单击和鼠标光标。 偏移量相对于合成文本,因此偏移量0表示合成文本的开头。

        如果位置在组合文本占用的区域之外,则返回null。

        参数
        x - 屏幕上的绝对x坐标
        y - 屏幕上的绝对y坐标
        结果
        文本命中信息,描述组合文本中的偏移量。
      • getInsertPositionOffset

        int getInsertPositionOffset()
        获取文本编辑组件中包含的已提交文本中插入位置的偏移量。 这是插入通过输入法输入的字符的偏移量。 例如,输入方法使用此信息来检查插入位置周围的文本。
        结果
        插入位置的偏移量
      • getCommittedText

        AttributedCharacterIterator getCommittedText​(int beginIndex,
                                                     int endIndex,
                                                     AttributedCharacterIterator.Attribute[] attributes)
        获取一个迭代器,提供对文本编辑组件中包含的整个文本和属性的访问权限,但未提交的文本除外。 对于索引计算,应忽略未提交(组合)的文本,并且不应通过迭代器访问该文本。

        输入方法可以提供它感兴趣的属性列表。在这种情况下,不需要通过迭代器访问实现者可能具有的其他属性的信息。 如果列表为null,则应使所有可用的属性信息都可访问。

        参数
        beginIndex - 第一个字符的索引
        endIndex - 最后一个字符后面的字符的索引
        attributes - 输入法感兴趣的属性列表
        结果
        一个迭代器,提供对文本及其属性的访问
      • getCommittedTextLength

        int getCommittedTextLength()
        获取文本编辑组件中包含的整个文本的长度,但未提交(组合)的文本除外。
        结果
        除了未提交的文本之外的文本长度
      • cancelLatestCommittedText

        AttributedCharacterIterator cancelLatestCommittedText​(AttributedCharacterIterator.Attribute[] attributes)
        从文本编辑组件获取最新提交的文本,并将其从组件的文本正文中删除。 这用于某些输入方法中的“撤消提交”功能,其中提交的文本将恢复为其先前的组合状态。 组合文本将使用InputMethodEvent发送到组件。

        通常,只应在文本提交后立即支持此功能,而不是在用户对文本执行其他操作之后。 如果不支持该功能,则返回null。

        输入方法可以提供它感兴趣的属性列表。在这种情况下,不需要通过迭代器访问实现者可能具有的其他属性的信息。 如果列表为null,则应使所有可用的属性信息都可访问。

        参数
        attributes - 输入法感兴趣的属性列表
        结果
        最新提交的文本,或者在不支持“撤消提交”功能时为null
      • getSelectedText

        AttributedCharacterIterator getSelectedText​(AttributedCharacterIterator.Attribute[] attributes)
        从文本编辑组件中获取当前选定的文本。 这可以用于各种目的。 其中之一是某些输入法中的“Reconvert”功能。 在这种情况下,输入方法通常会发送输入方法事件以用组合文本替换所选文本。 根据输入法的功能,这可能是所选文本的原始合成文本,在文本中任何位置输入的最新合成文本,或从所选文本转换回来的文本版本。

        输入方法可以提供它感兴趣的属性列表。在这种情况下,不需要通过迭代器访问实现者可能具有的其他属性的信息。 如果列表为null,则应使所有可用的属性信息都可访问。

        参数
        attributes - 输入法感兴趣的属性列表
        结果
        当前选定的文字