模块 java.desktop

类 TextMeasurer

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

public final class TextMeasurer extends Object implements Cloneable
TextMeasurer 类提供了换行所需的基本操作:测量到给定的前进,确定字符范围的前进,并为字符范围生成 TextLayout。它还提供了对段落进行增量编辑的方法。

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

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

自从:
1.3
参见:
  • 构造方法详细信息

    • TextMeasurer

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

    • 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
      返回:
      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