Module java.desktop
Package java.awt.font

Class TextMeasurer

java.lang.Object
java.awt.font.TextMeasurer
所有已实现的接口:
Cloneable

public final class TextMeasurer extends Object implements Cloneable
TextMeasurer类提供了进行换行所需的基本操作:测量给定进度的文本,确定一系列字符的进度,并为一系列字符生成TextLayout。它还提供了用于逐步编辑段落的方法。

TextMeasurer对象是使用表示单个文本段落的AttributedCharacterIterator构造的。 AttributedCharacterIteratorgetBeginIndex方法返回的值定义了第一个字符的绝对索引。 AttributedCharacterIteratorgetEndIndex方法返回的值定义了超出最后一个字符的索引。这些值定义了在调用TextMeasurer时要使用的索引范围。例如,获取文本范围的进度或文本范围的换行必须使用开始和结束索引值之间的索引。调用insertChardeleteChar会将TextMeasurer重置为使用这些调用中传递的AttributedCharacterIterator的开始索引和结束索引。

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

自:
1.3
参见:
  • Constructor Details

    • TextMeasurer

      public TextMeasurer(AttributedCharacterIterator text, FontRenderContext frc)
      从源文本构造一个TextMeasurer。源文本应为单个完整段落。
      参数:
      text - 源段落。不能为空。
      frc - 有关需要正确测量文本的图形设备的信息。不能为空。
  • Method Details

    • clone

      protected Object clone()
      从类中复制的描述: Object
      创建并返回此对象的副本。 "副本" 的确切含义可能取决于对象的类。一般意图是,对于任何对象x,表达式:
       x.clone() != x
      将为真,并且表达式:
       x.clone().getClass() == x.getClass()
      将为true,但这些不是绝对要求。虽然通常情况下:
       x.clone().equals(x)
      将为true,但这不是绝对要求。

      按照惯例,应通过调用super.clone来获取返回的对象。如果一个类及其所有超类(除了Object)遵守这个约定,那么x.clone().getClass() == x.getClass()

      按照惯例,此方法返回的对象应独立于正在克隆的对象。为了实现这种独立性,可能需要修改通过super.clone返回的对象的一个或多个字段,然后再返回它。通常,这意味着复制组成被克隆对象的内部“深层结构”的任何可变对象,并将对这些对象的引用替换为对副本的引用。如果一个类只包含原始字段或对不可变对象的引用,那么通常情况下,通过super.clone返回的对象中不需要修改任何字段。

      覆盖:
      clone 在类 Object
      返回:
      此实例的克隆。
      参见:
    • getLineBreakIndex

      public int getLineBreakIndex(int start, float maxAdvance)
      返回从start开始的行中第一个不适合的字符的索引,并可能测量到图形宽度为maxAdvance
      参数:
      start - 开始测量的字符索引。 start是绝对索引,而不是相对于段落开头的索引
      maxAdvance - 行必须适合的图形宽度
      返回:
      在从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
      返回:
      start开始直到(但不包括)limit的字符的TextLayout
      抛出:
      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