java.lang.Object
java.awt.font.TextMeasurer
- 所有已实现的接口:
-
Cloneable
TextMeasurer类提供了进行换行所需的基本操作:测量给定进度的文本,确定一系列字符的进度,并为一系列字符生成TextLayout。它还提供了用于逐步编辑段落的方法。
TextMeasurer对象是使用表示单个文本段落的AttributedCharacterIterator构造的。 AttributedCharacterIterator的getBeginIndex方法返回的值定义了第一个字符的绝对索引。 AttributedCharacterIterator的getEndIndex方法返回的值定义了超出最后一个字符的索引。这些值定义了在调用TextMeasurer时要使用的索引范围。例如,获取文本范围的进度或文本范围的换行必须使用开始和结束索引值之间的索引。调用insertChar和deleteChar会将TextMeasurer重置为使用这些调用中传递的AttributedCharacterIterator的开始索引和结束索引。
大多数客户端将使用更方便的LineBreakMeasurer,它实现了标准的换行策略(将尽可能多的单词放在每一行上)。
- 自:
- 1.3
- 参见:
-
Constructor Summary
ConstructorsConstructorDescription构造一个TextMeasurer来自源文本。 -
Method Summary
Modifier and TypeMethodDescriptionprotected 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。
-
Constructor Details
-
TextMeasurer
从源文本构造一个TextMeasurer。源文本应为单个完整段落。- 参数:
-
text- 源段落。不能为空。 -
frc- 有关需要正确测量文本的图形设备的信息。不能为空。
-
-
Method Details
-
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小于start -
IllegalArgumentException- 如果start或limit不在段落的开头和结尾之间。
-
getLayout
返回给定字符范围上的TextLayout。- 参数:
-
start- 第一个字符的索引 -
limit- 最后一个字符之后的索引。必须大于start - 返回:
-
从
start开始直到(但不包括)limit的字符的TextLayout - 抛出:
-
IndexOutOfBoundsException- 如果limit小于start -
IllegalArgumentException- 如果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
-