- java.lang.Object
-
- java.awt.font.TextMeasurer
-
- 实现的所有接口
-
Cloneable
public final class TextMeasurer extends Object implements Cloneable
TextMeasurer类提供换行所需的基本操作:测量到达给定的TextLayout,确定一系列字符的前进,以及为一系列字符生成TextLayout。 它还提供了增量编辑段落的方法。甲
TextMeasurer对象被构造用AttributedCharacterIterator表示文本的一个段落。 由返回的值getBeginIndex的方法AttributedCharacterIterator限定的第一个字符的绝对索引。 在返回的值getEndIndex的方法AttributedCharacterIterator定义过去的最后一个字符的索引。 这些值定义了在调用TextMeasurer使用的索引范围。 例如,调用获取一系列文本的进度或一系列文本的换行符必须使用开始和结束索引值之间的索引。 调用insertChar和deleteChar重置TextMeasurer以使用这些调用中传递的AttributedCharacterIterator的开始索引和结束索引。大多数客户将使用更方便的
LineBreakMeasurer,它实现了标准的换行策略(放置尽可能多的单词适合每一行)。- 从以下版本开始:
- 1.3
- 另请参见:
-
LineBreakMeasurer
-
-
构造方法摘要
构造方法 构造器 描述 TextMeasurer(AttributedCharacterIterator text, FontRenderContext frc)从源文本构造TextMeasurer。
-
方法摘要
所有方法 实例方法 具体的方法 变量和类型 方法 描述 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- 有关正确测量文本所需的图形设备的信息。 不能为空。
-
-
方法详细信息
-
getLineBreakIndex
public int getLineBreakIndex(int start, float maxAdvance)返回第一个字符的索引,该索引不适合从start开始的行,并且可能以图形宽度测量最多maxAdvance。- 参数
-
start- 开始测量的字符索引。start是绝对索引,而不是相对于段落的开头 -
maxAdvance- 行必须适合的图形宽度 - 结果
-
最后一个字符后面的索引,它适合从
start开始的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 - 结果
-
a
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
-
-