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
ConstructorDescription构造一个TextMeasurer
来自源文本。 -
Method Summary
Modifier and TypeMethodDescriptionprotected Object
clone()
创建并返回此对象的副本。void
deleteChar
(AttributedCharacterIterator newParagraph, int deletePos) 在当前由此TextMeasurer
表示的段落中删除一个字符后更新TextMeasurer
。float
getAdvanceBetween
(int start, int limit) 返回从start
开始并包括直到limit
字符的行的图形宽度。getLayout
(int start, int limit) 返回给定字符范围上的TextLayout
。int
getLineBreakIndex
(int start, float maxAdvance) 返回从start
开始的行中第一个不适合的字符的索引,并可能测量到图形宽度为maxAdvance
。void
insertChar
(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
-