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

Class TextMeasurer

  • 实现的所有接口
    Cloneable

    public final class TextMeasurerextends Objectimplements Cloneable
    TextMeasurer类提供换行所需的基本操作:测量到达给定的TextLayout ,确定一系列字符的前进,以及为一系列字符生成TextLayout 它还提供了增量编辑段落的方法。

    TextMeasurer对象被构造用AttributedCharacterIterator表示文本的一个段落。 由返回的值getBeginIndex的方法AttributedCharacterIterator限定的第一个字符的绝对索引。 在返回的值getEndIndex的方法AttributedCharacterIterator定义过去的最后一个字符的索引。 这些值定义了在调用TextMeasurer使用的索引范围。 例如,调用获取一系列文本的进度或一系列文本的换行符必须使用开始和结束索引值之间的索引。 调用insertChardeleteChar重置TextMeasurer以使用这些调用中传递的AttributedCharacterIterator的开始索引和结束索引。

    大多数客户将使用更方便的LineBreakMeasurer ,它实现了标准的换行策略(放置尽可能多的单词适合每一行)。

    从以下版本开始:
    1.3
    另请参见:
    LineBreakMeasurer
    • 构造方法详细信息

      • TextMeasurer

        public TextMeasurer​(AttributedCharacterIterator text,                    FontRenderContext frc)
        从源文本构造一个TextMeasurer 源文本应该是一个完整的段落。
        参数
        text - 源段落。 不能为空。
        frc - 有关正确测量文本所需的图形设备的信息。 不能为空。
    • 方法详细信息

      • getLineBreakIndex

        public int getLineBreakIndex​(int start,                             float maxAdvance)
        返回第一个字符的索引,该索引不适合从 start开始的行,并且可能以图形宽度测量最多 maxAdvance
        参数
        start - 开始测量的字符索引。 start是绝对索引,而不是相对于段落的开头
        maxAdvance - 行必须适合的图形宽度
        结果
        最后一个字符后面的索引,它适合从 start开始的 start ,图形宽度不超过 maxAdvance
        异常
        IllegalArgumentException - 如果 start小于段落的开头。
      • getAdvanceBetween

        public float getAdvanceBetween​(int start,                               int limit)
        返回从start开始的行的图形宽度,包括最多limit字符。 startlimit是绝对指数,而不是相对于段落的开头。
        参数
        start - 开始测量的字符索引
        limit - 停止测量的字符索引
        结果
        一行的图形宽度,从 start开始,包括最多 limit字符
        异常
        IndexOutOfBoundsException - 如果 limit小于 start
        IllegalArgumentException - 如果 startlimit不在段落的开头和段落的结尾之间。
      • getLayout

        public TextLayout getLayout​(int start,                            int limit)
        返回给定字符范围的 TextLayout
        参数
        start - 第一个字符的索引
        limit - 最后一个字符后的索引。 必须大于start
        结果
        a TextLayout ,字符开头于 start最多(但不包括) limit
        异常
        IndexOutOfBoundsException - 如果 limit小于 start
        IllegalArgumentException - 如果 startlimit不在段落的开头和段落的结尾之间。
      • insertChar

        public void insertChar​(AttributedCharacterIterator newParagraph,                       int insertPos)
        更新TextMeasurer单个字符已经被插入到当前这个表示的段落后TextMeasurer 在此调用之后,此TextMeasurer相当于从文本创建的新TextMeasurer ; 但是,更新现有的TextMeasurer比从头创建新的更有效。
        参数
        newParagraph - 执行插入后段落的文本。 不能为空。
        insertPos - 插入字符的文本中的位置。 不得小于newParagraph ,且必须小于newParagraph的结尾。
        异常
        IndexOutOfBoundsException - 如果 insertPos小于 newParagraph或大于或等于 newParagraph
        NullPointerException - 如果 newParagraphnull
      • deleteChar

        public void deleteChar​(AttributedCharacterIterator newParagraph,                       int deletePos)
        更新TextMeasurer后一个字符已经从当前由此表示的段落中删除TextMeasurer 在此调用之后,此TextMeasurer相当于从文本创建的新TextMeasurer ; 但是,更新现有的TextMeasurer比从头创建新的更有效。
        参数
        newParagraph - 执行删除后的段落文本。 不能为空。
        deletePos - 文本中删除字符的位置。 不得小于newParagraph ,且不得大于newParagraph的结尾。
        异常
        IndexOutOfBoundsException -如果 deletePos小于开始 newParagraph或大于的端 newParagraph
        NullPointerException - 如果 newParagraphnull