public final class TextMeasurer extends Object implements Cloneable
TextMeasurer
类提供了线的突破需要原始操作:测量一个给定的进展,确定一个字符范围的推进,并产生一系列的特征
TextLayout
。它还提供了增量编辑段落的方法。
一个TextMeasurer
对象是代表一个单一的文本段落的AttributedCharacterIterator
构造。价值的定义AttributedCharacterIterator
的getBeginIndex
方法返回第一个字符的绝对指标。价值的AttributedCharacterIterator
getEndIndex
方法返回的索引定义过去的最后一个字符。这些值定义了指标使用电话的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 段落删除。
|
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 段落。
|
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
,数组类型的clone
T[]
方法的返回类型是T[]
其中T是任何参考或原始类型。否则,此方法创建此对象的类的新实例并初始化与正是这个对象的相应字段内容的各个领域,如分配;字段的内容不克隆自己。因此,该方法执行此对象的“浅副本”,而不是“深复制”操作。
这类Object
本身不实现接口Cloneable
,所以叫clone
方法对一个对象的类是Object
将导致在运行时抛出异常。
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
比从头创建一个新的。
newParagraph
执行插入在段落文本。不能为空。
insertPos
-位置在文本字符插入。必须不小于
newParagraph
开始,必须小于
newParagraph
结束。
IndexOutOfBoundsException
-如果
newParagraph
insertPos
小于或大于或等于
newParagraph
结束的开始
null
newParagraph
NullPointerException
public void deleteChar(AttributedCharacterIterator newParagraph, int deletePos)
TextMeasurer
后一个字符被从目前为代表的这
TextMeasurer
段落删除。此调用后,这
TextMeasurer
相当于从文本创建一个新的
TextMeasurer
;然而,它通常会更有效地更新现有的
TextMeasurer
比从头创建一个新的。
newParagraph
执行删除后的段落文本。不能为空。
deletePos
-位置在文本字符被删除。必须不小于
newParagraph
开始,并不得超过
newParagraph
结束。
IndexOutOfBoundsException
-如果
deletePos
小于或大于
newParagraph
newParagraph
结束的开始
null
newParagraph
NullPointerException
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.