public final class TextMeasurer extends Object implements Cloneable
TextMeasurer类提供换行所需的基本操作:测量到给定的预先确定范围内的字符的前进,并产生TextLayout用于一定范围的字符。
它还提供了段落增量编辑的方法。
TextMeasurer对象被构造成表示文本的单个段落的AttributedCharacterIterator。 getBeginIndex方法返回的值为AttributedCharacterIterator定义了第一个字符的绝对索引。 在返回的值getEndIndex的方法AttributedCharacterIterator定义过去的最后一个字符的索引。 这些值定义了在调用TextMeasurer时使用的索引的范围。 例如,要获取一定范围的文本或文本范围的换行符的调用必须使用起始和结束索引值之间的索引。 调用insertChar和deleteChar重新设置TextMeasurer使用这些调用中的AttributedCharacterIterator的开始索引和结束索引。
大多数客户将使用更方便的LineBreakMeasurer ,它实现标准换行政策(放置尽可能多的单词适合每一行)。
LineBreakMeasurer
| Constructor and Description |
|---|
TextMeasurer(AttributedCharacterIterator text, FontRenderContext frc)
从源文本构造一个
TextMeasurer 。
|
| Modifier and Type | Method and Description |
|---|---|
protected Object |
clone()
创建并返回此对象的副本。
|
void |
deleteChar(AttributedCharacterIterator newParagraph, int deletePos)
从此TextMeasurer目前代表的段落中删除单个
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后,更新
TextMeasurer 。
|
public TextMeasurer(AttributedCharacterIterator text, FontRenderContext frc)
TextMeasurer 。
源文本应该是一个整个段落。
text - 来源段落。
不能为空。
frc - 有关正确测量文本所需的图形设备信息。
不能为空。
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返回的对象中的字段。
类别Object的方法clone执行特定的克隆操作。 首先,如果该对象的类不实现接口Cloneable ,那么会抛出一个CloneNotSupportedException 。 请注意,所有阵列都被认为是实现接口Cloneable ,并且数组类型T[]的clone方法的返回类型是T[] ,其中T是任何引用或原始类型。 否则,该方法将创建该对象的类的新实例,并将其所有字段初始化为完全符合该对象的相应字段的内容,就像通过赋值一样。 这些字段的内容本身不被克隆。 因此,该方法执行该对象的“浅拷贝”,而不是“深度拷贝”操作。
Object类本身并不实现接口Cloneable ,因此在类别为Object的对象上调用clone方法将导致运行时抛出异常。
public int getLineBreakIndex(int start,
float maxAdvance)
start和可能的测量高达
maxAdvance在图形宽度。
start - 开始测量的字符索引。
start是一个绝对的索引,不是相对于段落的开头
maxAdvance - 线必须适合的图形宽度
start ,图形宽度不超过
maxAdvance
IllegalArgumentException - 如果
start小于段落的开头。
public float getAdvanceBetween(int start,
int limit)
start和包括字符,直到达到limit 。
start和limit是绝对指数,不是相对于段落的开头。
start - 开始测量的字符索引
limit - 停止测量的字符索引
start和包括字符,直到达到
limit
IndexOutOfBoundsException - 如果
limit小于
start
IllegalArgumentException - 如果
start或
limit不在段落开头和段落结尾之间。
public TextLayout getLayout(int start, int limit)
TextLayout给定的字符范围。
start - 第一个字符的索引
limit - 最后一个字符后的索引。
必须大于start
TextLayout的字符从
start开始,直到(但不包括)
limit
IndexOutOfBoundsException - 如果
limit小于
start
IllegalArgumentException - 如果
start或
limit不在段落开头和段落结尾之间。
public void insertChar(AttributedCharacterIterator newParagraph, int insertPos)
TextMeasurer的TextMeasurer后,更新TextMeasurer 。
此电话后,此TextMeasurer TextMeasurer从文本创建的新的TextMeasurer ;
然而,更新现有的TextMeasurer比从头开始创建一个新的更有效。
newParagraph - 执行插入后段落的文本。
不能为空。
insertPos - 插入字符的文本中的位置。
不得少于newParagraph的开始,必须小于newParagraph的结束。
IndexOutOfBoundsException -如果
insertPos小于开始
newParagraph ,或者大于或等于的端
newParagraph
NullPointerException - 如果
newParagraph是
null
public void deleteChar(AttributedCharacterIterator newParagraph, int deletePos)
TextMeasurer后,更新TextMeasurer 。
此电话后,此TextMeasurer TextMeasurer从文本创建的新的TextMeasurer ;
然而,更新现有的TextMeasurer比从头开始创建一个新的更有效。
newParagraph - 执行删除后段落的文本。
不能为空。
deletePos - 字符被删除的文本中的位置。
不得少于newParagraph的开始,不能大于newParagraph 。
IndexOutOfBoundsException -如果
deletePos小于开始
newParagraph或大于的端
newParagraph
NullPointerException - 如果
newParagraph是
null
Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.