モジュール java.desktop
パッケージ 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
    関連項目:
    LineBreakMeasurer
    • コンストラクタの詳細

      • TextMeasurer

        public TextMeasurer​(AttributedCharacterIterator text,
                            FontRenderContext frc)
        ソース・テキストからTextMeasurerを構築します。 ソース・テキストは1段落全体になります。
        パラメータ:
        text - ソース段落。 nullは不可。
        frc - テキストを正確に測定するために必要なグラフィックス・デバイスに関する情報。 nullは不可。
    • メソッドの詳細

      • 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である場合