返回介绍

java.awt.font 类 TextMeasurer

发布于 2019-10-04 09:50:22 字数 9240 浏览 1071 评论 0 收藏 0

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(AttributedCharacterIteratortext, FontRenderContextfrc)

从源文本构造 TextMeasurer

方法摘要
protected Objectclone()

创建并返回此对象的一个副本。

voiddeleteChar(AttributedCharacterIteratornewParagraph, intdeletePos)

从当前由此 TextMeasurer 表示的段落中删除一个字符后,更新 TextMeasurer

floatgetAdvanceBetween(intstart, intlimit)

返回从 start 开始并包括一直到 limit 的字符的行的图形宽度。

TextLayoutgetLayout(intstart, intlimit)

返回给定字符范围上的 TextLayout

intgetLineBreakIndex(intstart, floatmaxAdvance)

返回不能置于文本行上的第一个字符,该文本行从 start 开始并可能测量到图形宽度的 maxAdvance

voidinsertChar(AttributedCharacterIteratornewParagraph, intinsertPos)

在将单个字符插入当前由此 TextMeasurer 表示的段落中后,更新该 TextMeasurer

从类 java.lang.Object 继承的方法
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

构造方法详细信息

TextMeasurer

public TextMeasurer(AttributedCharacterIteratortext,
                    FontRenderContextfrc)
从源文本构造 TextMeasurer 。源文本应为一个整段。
参数:
text - 源段落。不能为 null。
frc - 关于需要正确测量文本的图形设备的信息。不能为 null。

方法详细信息

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 返回的对象中的字段。

Object 类的 clone 方法执行特定的克隆操作。首先,如果此对象的类不能实现接口 Cloneable ,则会抛出 CloneNotSupportedException 。注意:所有的数组都被视为实现接口 Cloneable 。否则,此方法会创建此对象的类的一个新实例,并像通过分配那样,严格使用此对象相应字段的内容初始化该对象的所有字段;这些字段的内容没有被自我克隆。所以,此方法执行的是该对象的“浅表复制”,而不“深层复制”操作。

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

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

getLineBreakIndex

public int getLineBreakIndex(intstart,
                             floatmaxAdvance)
返回不能置于文本行上的第一个字符,该文本行从 start 开始并可能测量到图形宽度的 maxAdvance
参数:
start - 从此处开始测量的字符索引。 start 是一个绝对索引,而不是相对于段落开始处的相对索引
maxAdvance - 文本行必须符合的图形宽度
返回:
置于从 start 开始、不长于 maxAdvance 文本行上的最后一个字符后的索引
抛出:
IllegalArgumentException - 如果 start 小于段落的开始位置。

getAdvanceBetween

public float getAdvanceBetween(intstart,
                               intlimit)
返回从 start 开始并包括一直到 limit 的字符的行的图形宽度。 startlimit 是绝对索引,不是相对于段落开始处的相对索引。
参数:
start - 开始测量的字符索引
limit - 停止测量的字符索引
返回:
start 处开始并包括一直到 limit 的字符的行的图形宽度
抛出:
IndexOutOfBoundsException - 如果 limit 小于 start
IllegalArgumentException - 如果 startlimit 不在段落开始处和段落结束处之间。

getLayout

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

insertChar

public void insertChar(AttributedCharacterIteratornewParagraph,
                       intinsertPos)
在将单个字符插入当前由此 TextMeasurer 表示的段落中后,更新该 TextMeasurer 。在此调用后,该 TextMeasurer 等效于从文本创建的新 TextMeasurer ;不过,更新现有 TextMeasurer 通常比重新创建一个新 TextMeasurer 效率更高。
参数:
newParagraph - 执行插入后段落的文本。不能为 null。
insertPos - 插入字符在文本中的位置。不能小于 newParagraph 的开始,且必须小于 newParagraph 的结束。
抛出:
IndexOutOfBoundsException - 如果 insertPos 小于 newParagraph 的开始或者大于或等于 newParagraph 的结束
NullPointerException - 如果 newParagraphnull

deleteChar

public void deleteChar(AttributedCharacterIteratornewParagraph,
                       intdeletePos)
从当前由此 TextMeasurer 表示的段落中删除一个字符后,更新 TextMeasurer 。在此调用后,该 TextMeasurer 等效于从文本创建的新 TextMeasurer ;不过,更新现有 TextMeasurer 通常比重新创建一个新 TextMeasurer 效率更高。
参数:
newParagraph - 执行删除后的段落文本。不能为 null。
deletePos - 所移除字符在文本中的位置。不能小于 newParagraph 的开始,而且不能大于 newParagraph 的结束。
抛出:
IndexOutOfBoundsException - 如果 deletePos 小于 newParagraph 的开始或大于 newParagraph 的结束
NullPointerException - 如果 newParagraphnull

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文