- java.lang.Object
-
- java.awt.font.TextMeasurer
-
- All Implemented Interfaces:
-
Cloneable
public final class TextMeasurer extends Object implements Cloneable
TextMeasurer
类提供换行所需的原始操作:测量一个给定的提前,确定一个字符范围的提前,并为一系列字符生成一个TextLayout
。 它还提供了段落增量编辑的方法。甲
TextMeasurer
对象被构造用AttributedCharacterIterator
表示文本的一个段落。 由返回的值getBeginIndex
的方法AttributedCharacterIterator
限定的第一个字符的绝对索引。 在返回的值getEndIndex
的方法AttributedCharacterIterator
定义过去的最后一个字符的索引。 这些值定义了在调用TextMeasurer
使用的索引的范围。 例如,要获取一定范围的文本或一行文本的换行符的调用必须使用起始和结束索引值之间的索引。 致电insertChar
和deleteChar
重新设置TextMeasurer
使用这些调用中传递的AttributedCharacterIterator
的起始索引和结束索引。大多数客户端将使用更方便的
LineBreakMeasurer
,它实现标准换行政策(放置尽可能多的单词适合每一行)。- 从以下版本开始:
- 1.3
- 另请参见:
-
LineBreakMeasurer
-
-
构造方法摘要
构造方法 Constructor 描述 TextMeasurer(AttributedCharacterIterator text, FontRenderContext frc)
从源文本构造一个TextMeasurer
。
-
方法摘要
所有方法 接口方法 具体的方法 Modifier and Type 方法 描述 protected Object
clone()
创建并返回此对象的副本。void
deleteChar(AttributedCharacterIterator newParagraph, int deletePos)
更新TextMeasurer
后一个字符已经从当前由此表示的段落中删除TextMeasurer
。float
getAdvanceBetween(int start, int limit)
返回从start
开始的行的图形宽度,其中包含高达limit
字符。TextLayout
getLayout(int start, int limit)
在给定的字符范围内返回一个TextLayout
。int
getLineBreakIndex(int start, float maxAdvance)
返回在start
开始的行上不适合的第一个字符的索引,并且可以以图形宽度测量高达maxAdvance
。void
insertChar(AttributedCharacterIterator newParagraph, int insertPos)
更新TextMeasurer
单个字符已经被插入到当前这个表示的段落后TextMeasurer
。
-
-
-
构造方法详细信息
-
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
执行特定克隆操作。 首先,如果此对象的类不实现接口Cloneable
,则抛出一个CloneNotSupportedException
。 请注意,所有阵列被认为是实现该接口Cloneable
并且所述的返回类型clone
数组类型的方法T[]
是T[]
其中T是任何引用或原始类型。 否则,该方法将创建该对象的类的新实例,并将其所有字段初始化为该对象的相应字段的内容,就像通过赋值一样。 这些字段的内容本身不被克隆。 因此,该方法执行该对象的“浅拷贝”,而不是“深度拷贝”操作。Object
类Object
并不实现接口Cloneable
,因此在类为Object
的对象上调用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
public TextLayout getLayout(int start, int limit)
在给定的字符范围内返回一个TextLayout
。- 参数
-
start
- 第一个字符的索引 -
limit
- 最后一个字符后的索引。 必须大于start
- 结果
-
一个
TextLayout
的字符,从start
开始,直到(但不包括)limit
- 异常
-
IndexOutOfBoundsException
- 如果limit
小于start
-
IllegalArgumentException
- 如果start
或limit
不在段落开头和段落结尾之间。
-
insertChar
public void insertChar(AttributedCharacterIterator newParagraph, int insertPos)
更新TextMeasurer
单个字符已经被插入到当前这个表示的段落后TextMeasurer
。 此电话后,此TextMeasurer
相当于从文本创建的新的TextMeasurer
; 然而,更新现有的TextMeasurer
比从头开始创建一个新的更有效。- 参数
-
newParagraph
- 执行插入后段落的文本。 不能为空。 -
insertPos
- 插入字符的文本中的位置。 不得少于newParagraph
的开始,而且必须小于newParagraph
的结尾。 - 异常
-
IndexOutOfBoundsException
-如果insertPos
小于开始newParagraph
,或者大于或等于的端newParagraph
-
NullPointerException
- 如果newParagraph
是null
-
deleteChar
public void deleteChar(AttributedCharacterIterator newParagraph, int deletePos)
更新TextMeasurer
后一个字符已经从当前由此表示的段落中删除TextMeasurer
。 此电话后,此TextMeasurer
相当于从文本创建的新的TextMeasurer
; 然而,更新现有的TextMeasurer
比从头开始创建一个新的更有效。- 参数
-
newParagraph
- 执行删除后段落的文本。 不能为空。 -
deletePos
- 字符被删除的文本中的位置。 不得小于newParagraph
,而不能大于末尾的newParagraph
。 - 异常
-
IndexOutOfBoundsException
-如果deletePos
小于开始newParagraph
或大于的端newParagraph
-
NullPointerException
- 如果newParagraph
是null
-
-