- 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 Objectclone()创建并返回此对象的副本。voiddeleteChar(AttributedCharacterIterator newParagraph, int deletePos)更新TextMeasurer后一个字符已经从当前由此表示的段落中删除TextMeasurer。floatgetAdvanceBetween(int start, int limit)返回从start开始的行的图形宽度,其中包含高达limit字符。TextLayoutgetLayout(int start, int limit)在给定的字符范围内返回一个TextLayout。intgetLineBreakIndex(int start, float maxAdvance)返回在start开始的行上不适合的第一个字符的索引,并且可以以图形宽度测量高达maxAdvance。voidinsertChar(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
-
-