Module  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 - 组合文本中的偏移量,如果有合成文本; 否则为空
        结果
        表示偏移的屏幕位置的矩形
      • getLocationOffset

        TextHitInfo getLocationOffset​(int x,
                                      int y)
        获取屏幕上指定的绝对x和y坐标的组合文本中的偏移量。 此信息用于处理鼠标点击和鼠标光标。 偏移量相对于组合文本,因此offset 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 - 输入法感兴趣的属性列表
        结果
        最新提交的文本,如果不支持“撤消提交”功能,则为空
      • getSelectedText

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

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

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