Module  java.desktop
软件包  java.awt.font

Class TextMeasurer

  • All Implemented Interfaces:
    Cloneable


    public final class TextMeasurer
    extends Object
    implements Cloneable
    TextMeasurer类提供换行所需的原始操作:测量一个给定的提前,确定一个字符范围的提前,并为一系列字符生成一个TextLayout 它还提供了段落增量编辑的方法。

    TextMeasurer对象被构造用AttributedCharacterIterator表示文本的一个段落。 由返回的值getBeginIndex的方法AttributedCharacterIterator限定的第一个字符的绝对索引。 在返回的值getEndIndex的方法AttributedCharacterIterator定义过去的最后一个字符的索引。 这些值定义了在调用TextMeasurer使用的索引的范围。 例如,要获取一定范围的文本或一行文本的换行符的调用必须使用起始和结束索引值之间的索引。 致电insertChardeleteChar重新设置TextMeasurer使用这些调用中传递的AttributedCharacterIterator的起始索引和结束索引。

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

    从以下版本开始:
    1.3
    另请参见:
    LineBreakMeasurer
    • 构造方法详细信息

      • TextMeasurer

        public TextMeasurer​(AttributedCharacterIterator text,
                            FontRenderContext frc)
        从源文本构造一个TextMeasurer 源文本应该是一个整个段落。
        参数
        text - 来源段落。 不能为空。
        frc - 有关正确测量文本所需的图形设备的信息。 不能为空。
    • 方法详细信息

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

        该方法cloneObject执行特定克隆操作。 首先,如果此对象的类不实现接口Cloneable ,则抛出一个CloneNotSupportedException 请注意,所有阵列被认为是实现该接口Cloneable并且所述的返回类型clone数组类型的方法T[]T[]其中T是任何引用或原始类型。 否则,该方法将创建该对象的类的新实例,并将其所有字段初始化为该对象的相应字段的内容,就像通过赋值一样。 这些字段的内容本身不被克隆。 因此,该方法执行该对象的“浅拷贝”,而不是“深度拷贝”操作。

        ObjectObject并不实现接口Cloneable ,因此在类为Object的对象上调用clone方法将导致在运行时抛出异常。

        重写:
        cloneObject
        结果
        这个实例的一个克隆。
        另请参见:
        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
        结果
        一个 TextLayout的字符,从 start开始,直到(但不包括) limit
        异常
        IndexOutOfBoundsException - 如果 limit小于 start
        IllegalArgumentException - 如果 startlimit不在段落开头和段落结尾之间。
      • insertChar

        public void insertChar​(AttributedCharacterIterator newParagraph,
                               int insertPos)
        更新TextMeasurer单个字符已经被插入到当前这个表示的段落后TextMeasurer 此电话后,此TextMeasurer相当于从文本创建的新的TextMeasurer ; 然而,更新现有的TextMeasurer比从头开始创建一个新的更有效。
        参数
        newParagraph - 执行插入后段落的文本。 不能为空。
        insertPos - 插入字符的文本中的位置。 不得少于newParagraph的开始,而且必须小于newParagraph的结尾。
        异常
        IndexOutOfBoundsException -如果 insertPos小于开始 newParagraph ,或者大于或等于的端 newParagraph
        NullPointerException - 如果 newParagraphnull
      • deleteChar

        public void deleteChar​(AttributedCharacterIterator newParagraph,
                               int deletePos)
        更新TextMeasurer后一个字符已经从当前由此表示的段落中删除TextMeasurer 此电话后,此TextMeasurer相当于从文本创建的新的TextMeasurer ; 然而,更新现有的TextMeasurer比从头开始创建一个新的更有效。
        参数
        newParagraph - 执行删除后段落的文本。 不能为空。
        deletePos - 字符被删除的文本中的位置。 不得小于newParagraph ,而不能大于末尾的newParagraph
        异常
        IndexOutOfBoundsException -如果 deletePos小于开始 newParagraph或大于的端 newParagraph
        NullPointerException - 如果 newParagraphnull