JavaTM Platform
Standard Ed. 6

java.awt.font
类 TextMeasurer

java.lang.Object
  继承者 java.awt.font.TextMeasurer
所有已实现的接口:
Cloneable

public final class TextMeasurer
     
extends Object
implements Cloneable

TextMeasurer 类提供换行所需的基本操作:测量到给定的 advance,确定字符范围的 advance,并为字符范围生成一个 TextLayout。该类还提供了段落增量编辑的方法。

TextMeasurer 对象是使用表示单个文本段落的 AttributedCharacterIterator 构造的。AttributedCharacterIteratorgetBeginIndex 方法返回的值定义了第一个字符的绝对索引。AttributedCharacterIteratorgetEndIndex 方法返回的值定义了最后一个字符后的索引。这些值定义了调用 TextMeasurer 的时使用的索引范围。例如,要通过调用获取文本范围的 advance 或文本范围的换行,则必须使用开始索引值和结束索引值之间的索引。调用 insertChardeleteChar 重置 TextMeasurer 要使用在这些调用中传入的 AttributedCharacterIterator 的开始索引和结束索引。

大多数客户端将使用更方便的 LineBreakMeasurer,它实现了标准的换行策略(在每一行上放置尽可能多的适合的单词)。

从以下版本开始:
1.3
另请参见:
LineBreakMeasurer

构造方法摘要
TextMeasurer(AttributedCharacterIterator text, FontRenderContext frc)
          从源文本构造 TextMeasurer
 
方法摘要
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
 
从类 java.lang.Object 继承的方法
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

构造方法详细信息

TextMeasurer

public TextMeasurer(AttributedCharacterIterator text,
                    FontRenderContext frc)
从源文本构造 TextMeasurer。源文本应为一个整段。

参数:
text - 源段落。不能为 null。
frc - 关于需要正确测量文本的图形设备的信息。不能为 null。
方法详细信息

clone

protected Object clone()
从类 Object 复制的描述
创建并返回此对象的一个副本。“副本”的准确含义可能依赖于对象的类。这样做的目的是,对于任何对象 x,表达式:
x.clone() != x
为 true,表达式:
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。否则,此方法会创建此对象的类的一个新实例,并像通过分配那样,严格使用此对象相应字段的内容初始化该对象的所有字段;这些字段的内容没有被自我复制。所以,此方法执行的是该对象的“浅表复制”,而不“深层复制”操作。

Object 类本身不实现接口 Cloneable,所以在类为 Object 的对象上调用 clone 方法将会导致在运行时抛出异常。

覆盖:
Object 中的 clone
返回:
此实例的一个副本。
另请参见:
Cloneable

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 的字符的行的图形宽度。 startlimit 是绝对索引,不是相对于段落开始处的相对索引。

参数:
start - 开始测量的字符索引
limit - 停止测量的字符索引
返回:
start 处开始并包括一直到 limit 的字符的行的图形宽度
抛出:
IndexOutOfBoundsException - 如果 limit 小于 start
IllegalArgumentException - 如果 startlimit 不在段落开始处和段落结束处之间。

getLayout

public TextLayout getLayout(int start,
                            int limit)
返回给定字符范围上的 TextLayout

参数:
start - 第一个字符的索引
limit - 最后一个字符之后的索引。必须大于 start
返回:
start 开始(不包括)直到 limit 的字符的 TextLayout
抛出:
IndexOutOfBoundsException - 如果 limit 小于 start
IllegalArgumentException - 如果 startlimit 不在段落开始处和段落结束处之间。

insertChar

public void insertChar(AttributedCharacterIterator newParagraph,
                       int insertPos)
在将单个字符插入当前由此 TextMeasurer 表示的段落中后,更新该 TextMeasurer。在此调用后,该 TextMeasurer 等效于从文本创建的新 TextMeasurer;不过,更新现有 TextMeasurer 通常比重新创建一个新 TextMeasurer 效率更高。

参数:
newParagraph - 执行插入后段落的文本。不能为 null。
insertPos - 插入字符在文本中的位置。不能小于 newParagraph 的开始,且必须小于 newParagraph 的结束。
抛出:
IndexOutOfBoundsException - 如果 insertPos 小于 newParagraph 的开始或者大于或等于 newParagraph 的结束
NullPointerException - 如果 newParagraphnull

deleteChar

public void deleteChar(AttributedCharacterIterator newParagraph,
                       int deletePos)
从当前由此 TextMeasurer 表示的段落中删除一个字符后,更新 TextMeasurer。在此调用后,该 TextMeasurer 等效于从文本创建的新 TextMeasurer;不过,更新现有 TextMeasurer 通常比重新创建一个新 TextMeasurer 效率更高。

参数:
newParagraph - 执行删除后的段落文本。不能为 null。
deletePos - 所移除字符在文本中的位置。不能小于 newParagraph 的开始,而且不能大于 newParagraph 的结束。
抛出:
IndexOutOfBoundsException - 如果 deletePos 小于 newParagraph 的开始或大于 newParagraph 的结束
NullPointerException - 如果 newParagraphnull

JavaTM Platform
Standard Ed. 6

提交错误或意见
有关更多的 API 参考资料和开发人员文档,请参阅 Java SE 开发人员文档。该文档包含更详细的、面向开发人员的描述,以及总体概述、术语定义、使用技巧和工作代码示例。

版权所有 2007 Sun Microsystems, Inc. 保留所有权利。 请遵守许可证条款。另请参阅文档重新分发政策