モジュール java.desktop
パッケージ java.awt.font

クラスTextMeasurer

java.lang.Object
java.awt.font.TextMeasurer
すべての実装されたインタフェース:
Cloneable

public final class TextMeasurer extends Object implements Cloneable
TextMeasurerクラスは、有効幅の測定、文字範囲の有効幅の指定、文字範囲のTextLayoutの作成など、改行に必要な基本操作を提供します。 パラグラフが増えた場合の編集メソッドも提供します。

TextMeasurerオブジェクトは、1段落のテキストを表すAttributedCharacterIteratorで構築されます。 AttributedCharacterIteratorgetBeginIndexメソッドが返す値は、最初の文字の絶対インデックスを定義します。 AttributedCharacterIteratorgetEndIndexメソッドが返す値は、最後の文字の次のインデックスを定義します。 これらの値によって、TextMeasurerを呼び出すときに使用するインデックスの範囲が定義されます。 たとえば、テキストの範囲の有効幅、つまりテキストの範囲の改行を取得するための呼出しでは、開始インデックス値と終了インデックス値の間のインデックスを使用する必要があります。 insertCharおよびdeleteCharを呼び出すと、TextMeasurerがリセットされ、これらの呼出しで渡されたAttributedCharacterIteratorの開始インデックスと終了インデックスが使用されます。

ほとんどのクライアントは、標準改行ポリシー(各行に配置できるだけの文字を配置)を実装する便利なLineBreakMeasurerを使用します。

導入されたバージョン:
1.3
関連項目:
  • コンストラクタのサマリー

    コンストラクタ
    コンストラクタ
    説明
    ソース・テキストからTextMeasurerを構築します。
  • メソッドのサマリー

    修飾子と型
    メソッド
    説明
    protected Object
    このオブジェクトのコピーを作成して、返します。
    void
    deleteChar(AttributedCharacterIterator newParagraph, int deletePos)
    このTextMeasurerが現在表すパラグラフで1文字を削除してからTextMeasurerを更新します。
    float
    getAdvanceBetween(int start, int limit)
    startで始まり、limitまでの文字を含む行のグラフィック幅を返します。
    getLayout(int start, int limit)
    指定された文字範囲のTextLayoutを返します。
    int
    getLineBreakIndex(int start, float maxAdvance)
    startで始まり、グラフィック幅がmaxAdvanceの行に配置できない最初の文字のインデックスを返します。
    void
    insertChar(AttributedCharacterIterator newParagraph, int insertPos)
    このTextMeasurerが現在表すパラグラフへ1文字を挿入してからTextMeasurerを更新します。

    クラス java.lang.Objectで宣言されたメソッド

    equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • コンストラクタの詳細

    • TextMeasurer

      public TextMeasurer(AttributedCharacterIterator text, FontRenderContext frc)
      ソース・テキストからTextMeasurerを構築します。 ソース・テキストは1段落全体になります。
      パラメータ:
      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によって返されたオブジェクトを返す前に、その1つ以上のフィールドを変更することが必要になる場合があります。 これは、通常、複製するオブジェクトの内部「深層構造」を構成する可変オブジェクトのコピー、およびこれらのオブジェクトへの参照をコピーへの参照に置き換えることを意味します。 クラスにプリミティブ・フィールドまたは不変オブジェクトへの参照しか含まれていない場合は、通常、super.cloneによって返されたオブジェクト内のフィールドを変更する必要がありません。

      オーバーライド:
      clone、クラスObject
      戻り値:
      このインスタンスの複製。
      関連項目:
    • 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 - limitstartより前の場合
      IllegalArgumentException - startまたはlimitが段落の開始位置と終了位置の間にない場合。
    • getLayout

      public TextLayout getLayout(int start, int limit)
      指定された文字範囲のTextLayoutを返します。
      パラメータ:
      start - 最初の文字のインデックス
      limit - 最後の文字の次のインデックス。 これはstartより大きくなければならない
      戻り値:
      startから始まり、limitまでの(ただしlimitは含みません)文字のTextLayout
      例外:
      IndexOutOfBoundsException - limitstartより前の場合
      IllegalArgumentException - startまたはlimitが段落の開始位置と終了位置の間にない場合。
    • insertChar

      public void insertChar(AttributedCharacterIterator newParagraph, int insertPos)
      このTextMeasurerが現在表すパラグラフへ1文字を挿入してからTextMeasurerを更新します。 この呼出しのあと、TextMeasurerは、テキストから作成された新しいTextMeasurerと同等になります。しかし、通常は、まったくゼロから新しいものを作成するより既存のTextMeasurerを更新した方が効率的です。
      パラメータ:
      newParagraph - 挿入を実行した後の段落のテキスト。 nullは不可。
      insertPos - テキスト内の、文字が挿入された位置。 newParagraphの開始位置以降で、newParagraphの終了位置より前。
      例外:
      IndexOutOfBoundsException - insertPosnewParagraphの開始位置より前、またはnewParagraphの終了位置と同じか、それより後ろである場合
      NullPointerException - newParagraphnullである場合
    • deleteChar

      public void deleteChar(AttributedCharacterIterator newParagraph, int deletePos)
      このTextMeasurerが現在表すパラグラフで1文字を削除してからTextMeasurerを更新します。 この呼出しのあと、TextMeasurerは、テキストから作成された新しいTextMeasurerと同等になります。しかし、通常は、まったくゼロから新しいものを作成するより既存のTextMeasurerを更新した方が効率的です。
      パラメータ:
      newParagraph - 削除を実行した後の段落のテキスト。 nullは不可。
      deletePos - テキスト内の、文字が削除された位置。 newParagraphの開始位置以降で、newParagraphの終了位置を超えない。
      例外:
      IndexOutOfBoundsException - deletePosnewParagraphの開始位置より前、またはnewParagraphの終了位置より後ろである場合
      NullPointerException - newParagraphnullである場合