public final class TextMeasurer extends Object implements Cloneable
TextMeasurerクラスは、有効幅の測定、文字範囲の有効幅の指定、文字範囲のTextLayoutの作成など、改行に必要な基本操作を提供します。 パラグラフが増えた場合の編集メソッドも提供します。
TextMeasurerオブジェクトは、1段落のテキストを表すAttributedCharacterIteratorで構築されます。 AttributedCharacterIteratorのgetBeginIndexメソッドが返す値は、最初の文字の絶対インデックスを定義します。 AttributedCharacterIteratorのgetEndIndexメソッドが返す値は、最後の文字の次のインデックスを定義します。 これらの値によって、TextMeasurerを呼び出すときに使用するインデックスの範囲が定義されます。 たとえば、テキストの範囲の有効幅、つまりテキストの範囲の改行を取得するための呼出しでは、開始インデックス値と終了インデックス値の間のインデックスを使用する必要があります。 insertCharおよびdeleteCharを呼び出すと、TextMeasurerがリセットされ、これらの呼出しで渡されたAttributedCharacterIteratorの開始インデックスと終了インデックスが使用されます。
ほとんどのクライアントは、標準改行ポリシー(各行に配置できるだけの文字を配置)を実装する便利なLineBreakMeasurerを使用します。
LineBreakMeasurer| コンストラクタ | 説明 |
|---|---|
TextMeasurer(AttributedCharacterIterator text, FontRenderContext frc) |
ソース・テキストから
TextMeasurerを構築します。 |
| 修飾子と型 | メソッド | 説明 |
|---|---|---|
protected Object |
clone() |
このオブジェクトのコピーを作成して、返します。
|
void |
deleteChar(AttributedCharacterIterator newParagraph, int deletePos) |
この
TextMeasurerが現在表すパラグラフで1文字を削除してからTextMeasurerを更新します。 |
float |
getAdvanceBetween(int start, int limit) |
startで始まり、limitまでの文字を含む行のグラフィック幅を返します。 |
TextLayout |
getLayout(int start, int limit) |
指定された文字範囲の
TextLayoutを返します。 |
int |
getLineBreakIndex(int start, float maxAdvance) |
startで始まり、グラフィック幅がmaxAdvanceの行に配置できない最初の文字のインデックスを返します。 |
void |
insertChar(AttributedCharacterIterator newParagraph, int insertPos) |
この
TextMeasurerが現在表すパラグラフへ1文字を挿入してからTextMeasurerを更新します。 |
public TextMeasurer(AttributedCharacterIterator text, FontRenderContext frc)
TextMeasurerを構築します。 ソース・テキストは1段落全体になります。 text - ソース段落。 nullは不可。 frc - テキストを正確に測定するために必要なグラフィックス・デバイスに関する情報。 nullは不可。 protected Object clone()
Objectxについて、次の式
がtrueであり、次の式x.clone() != x
がx.clone().getClass() == x.getClass()
trueになることですが、これらは絶対的な要件ではありません。 また次の式
がx.clone().equals(x)
trueになりますが、これは絶対的な要件ではありません。
慣例上、返されたオブジェクトは、super.cloneを呼び出すことによって取得するようにしてください。 クラスとそのすべてのスーパー・クラス(Objectを除く)がこの規則に従っている場合は、x.clone().getClass()== x.getClass()が成立します。
通常、このメソッドにより返されるオブジェクトは、このオブジェクト(複製されています)から独立している必要があります。 この独立性を実現するには、super.cloneによって返されたオブジェクトを返す前に、その1つ以上のフィールドを変更することが必要になる場合があります。 これは、通常、複製するオブジェクトの内部「深層構造」を構成する可変オブジェクトのコピー、およびこれらのオブジェクトへの参照をコピーへの参照に置き換えることを意味します。 クラスにプリミティブ・フィールドまたは不変オブジェクトへの参照しか含まれていない場合は、通常、super.cloneによって返されたオブジェクト内のフィールドを変更する必要がありません。
クラスObjectのメソッドcloneは、特定のクローニング操作を実行します。 まず、このオブジェクトのクラスがインタフェースCloneableを実装していない場合は、CloneNotSupportedExceptionがスローされます。 すべての配列がインタフェースCloneableを実装していると見なされること、および配列型T[]のcloneメソッドの戻り値の型はT[] (ここで、Tは任意の参照またはプリミティブ型)です。 実装していない場合、このメソッドはこのオブジェクトのクラスの新しいインスタンスを生成し、そのフィールドをすべて、このオブジェクトの対応する各フィールドの内容で初期化します。これは代入と同様で、フィールドの内容自身が複製されるのではありません。 つまりこのメソッドは、オブジェクトの「シャロー・コピー」を生成しますが、「ディープ・コピー」は生成しません。
クラスObject自体はインタフェースCloneableを実装していないため、クラスがObjectであるオブジェクトに対してcloneメソッドを呼び出すと、実行時に例外がスローされます。
public int getLineBreakIndex(int start,
float maxAdvance)
startで始まり、グラフィック幅がmaxAdvanceの行に配置できない最初の文字のインデックスを返します。start - 測定を開始する位置の文字インデックス。startは絶対インデックスで、段落の開始位置を基準にしたものではないmaxAdvance - 行を配置するグラフィック幅startで始まり、グラフィック幅がmaxAdvance以内の行に配置できる最後の文字の後のインデックスIllegalArgumentException - startが段落の開始位置より前の場合。public float getAdvanceBetween(int start,
int limit)
startで始まり、limitまでの文字を含む行のグラフィック幅を返します。startとlimitは絶対インデックスで、段落の開始位置を基準にしたものではありません。start - 測定を開始する位置の文字インデックスlimit - 測定を終了する位置の文字インデックスstartで始まり、limitまでの文字を含む行のグラフィック幅IndexOutOfBoundsException - limitがstartより前の場合IllegalArgumentException - startまたはlimitが段落の開始位置と終了位置の間にない場合。public TextLayout getLayout(int start, int limit)
TextLayoutを返します。start - 最初の文字のインデックスlimit - 最後の文字の次のインデックス。 これはstartより大きくなければならない startから始まり、limitまでの(ただしlimitは含みません)文字のTextLayoutIndexOutOfBoundsException - limitがstartより前の場合IllegalArgumentException - startまたはlimitが段落の開始位置と終了位置の間にない場合。public void insertChar(AttributedCharacterIterator newParagraph, int insertPos)
TextMeasurerが現在表すパラグラフへ1文字を挿入してからTextMeasurerを更新します。 この呼出しのあと、TextMeasurerは、テキストから作成された新しいTextMeasurerと同等になります。しかし、通常は、まったくゼロから新しいものを作成するより既存のTextMeasurerを更新した方が効率的です。 newParagraph - 挿入を実行した後の段落のテキスト。 nullは不可。 insertPos - テキスト内の、文字が挿入された位置。 newParagraphの開始位置以降で、newParagraphの終了位置より前。 IndexOutOfBoundsException - insertPosがnewParagraphの開始位置より前、またはnewParagraphの終了位置と同じか、それより後ろである場合NullPointerException - newParagraphがnullである場合public void deleteChar(AttributedCharacterIterator newParagraph, int deletePos)
TextMeasurerが現在表すパラグラフで1文字を削除してからTextMeasurerを更新します。 この呼出しのあと、TextMeasurerは、テキストから作成された新しいTextMeasurerと同等になります。しかし、通常は、まったくゼロから新しいものを作成するより既存のTextMeasurerを更新した方が効率的です。 newParagraph - 削除を実行した後の段落のテキスト。 nullは不可。 deletePos - テキスト内の、文字が削除された位置。 newParagraphの開始位置以降で、newParagraphの終了位置を超えない。 IndexOutOfBoundsException - deletePosがnewParagraphの開始位置より前、またはnewParagraphの終了位置より後ろである場合NullPointerException - newParagraphがnullである場合 バグまたは機能を送信
詳細なAPIリファレンスおよび開発者ドキュメントについては、Java SEのドキュメントを参照してください。 そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2025, Oracle and/or its affiliates. All rights reserved. Use is subject to license terms. Documentation Redistribution Policyも参照してください。