java.lang.Object
java.awt.font.TextMeasurer
- 所有已实现的接口:
Cloneable
TextMeasurer 类提供了换行所需的基本操作:测量到给定的前进,确定字符范围的前进,并为字符范围生成 TextLayout。它还提供了对段落进行增量编辑的方法。
TextMeasurer 对象由代表单个文本段落的 AttributedCharacterIterator 构造。 AttributedCharacterIterator 的getBeginIndex 方法返回的值定义了第一个字符的绝对索引。 AttributedCharacterIterator 的 getEndIndex 方法返回的值定义了最后一个字符之后的索引。这些值定义了在调用 TextMeasurer 时使用的索引范围。例如,调用获取文本范围的前进或文本范围的换行必须使用开始和结束索引值之间的索引。调用 insertChar 和 deleteChar 重置 TextMeasurer 以使用在这些调用中传递的 AttributedCharacterIterator 的开始索引和结束索引。
大多数客户端会使用更方便的 LineBreakMeasurer ,它实现了标准的换行策略(每行放置尽可能多的单词)。
- 自从:
- 1.3
- 参见:
-
构造方法总结
构造方法构造方法描述从源文本构造一个TextMeasurer。 -
方法总结
修饰符和类型方法描述protected Objectclone()创建并返回此对象的副本。voiddeleteChar(AttributedCharacterIterator newParagraph, int deletePos) 在从此TextMeasurer当前表示的段落中删除单个字符后更新TextMeasurer。floatgetAdvanceBetween(int start, int limit) 返回从start开始并包括最多limit字符的行的图形宽度。getLayout(int start, int limit) 返回给定字符范围内的TextLayout。intgetLineBreakIndex(int start, float maxAdvance) 返回第一个字符的索引,该字符不适合从start开始的行,图形宽度可能最大为maxAdvance。voidinsertChar(AttributedCharacterIterator newParagraph, int insertPos) 在将单个字符插入到此TextMeasurer当前表示的段落中后更新TextMeasurer。
-
构造方法详细信息
-
TextMeasurer
从源文本构造一个TextMeasurer。源文本应该是一个完整的段落。- 参数:
text- 源段落。不能为空。frc- 有关正确测量文本所需的图形设备的信息。不能为空。
-
-
方法详情
-
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返回的对象中的任何字段都不需要修改。 -
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字符的行的图形宽度。start和limit是绝对索引,与段落开头无关。- 参数:
start- 开始测量的字符索引limit- 停止测量的字符索引- 返回:
-
从
start开始并包括最多limit个字符的行的图形宽度 - 抛出:
IndexOutOfBoundsException- 如果limit小于startIllegalArgumentException- 如果start或limit不在段落开头和结尾之间。
-
getLayout
返回给定字符范围内的TextLayout。- 参数:
start- 第一个字符的索引limit- 最后一个字符后的索引。必须大于start- 返回:
TextLayout用于从start开始到(但不包括)limit的字符- 抛出:
IndexOutOfBoundsException- 如果limit小于startIllegalArgumentException- 如果start或limit不在段落开头和结尾之间。
-
insertChar
在将单个字符插入到此TextMeasurer当前表示的段落中后更新TextMeasurer。在这个调用之后,这个TextMeasurer相当于从文本创建的一个新的TextMeasurer;但是,更新现有的TextMeasurer通常比从头创建新的更有效。- 参数:
newParagraph- 执行插入后的段落文本。不能为空。insertPos- 文本中插入字符的位置。不得小于newParagraph的开头,并且必须小于newParagraph的结尾。- 抛出:
IndexOutOfBoundsException- 如果insertPos小于newParagraph的开头或大于或等于newParagraph的结尾NullPointerException- 如果newParagraph是null
-
deleteChar
在从此TextMeasurer当前表示的段落中删除单个字符后更新TextMeasurer。在这个调用之后,这个TextMeasurer相当于从文本创建的一个新的TextMeasurer;但是,更新现有的TextMeasurer通常比从头创建新的更有效。- 参数:
newParagraph- 执行删除后的段落文本。不能为空。deletePos- 文本中字符被删除的位置。不能小于newParagraph的开始,也不能大于newParagraph的结束。- 抛出:
IndexOutOfBoundsException- 如果deletePos小于newParagraph的开始或大于newParagraph的结束NullPointerException- 如果newParagraph是null
-