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 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
。
-
构造方法详细信息
-
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
小于start
IllegalArgumentException
- 如果start
或limit
不在段落开头和结尾之间。
-
getLayout
返回给定字符范围内的TextLayout
。- 参数:
start
- 第一个字符的索引limit
- 最后一个字符后的索引。必须大于start
- 返回:
TextLayout
用于从start
开始到(但不包括)limit
的字符- 抛出:
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
-