- すべての実装されたインタフェース:
Cloneable
TextMeasurer
クラスは、有効幅の測定、文字範囲の有効幅の指定、文字範囲のTextLayout
の作成など、改行に必要な基本操作を提供します。 パラグラフが増えた場合の編集メソッドも提供します。
TextMeasurer
オブジェクトは、1段落のテキストを表すAttributedCharacterIterator
で構築されます。 AttributedCharacterIterator
のgetBeginIndex
メソッドが返す値は、最初の文字の絶対インデックスを定義します。 AttributedCharacterIterator
のgetEndIndex
メソッドが返す値は、最後の文字の次のインデックスを定義します。 これらの値によって、TextMeasurer
を呼び出すときに使用するインデックスの範囲が定義されます。 たとえば、テキストの範囲の有効幅、つまりテキストの範囲の改行を取得するための呼出しでは、開始インデックス値と終了インデックス値の間のインデックスを使用する必要があります。 insertChar
およびdeleteChar
を呼び出すと、TextMeasurer
がリセットされ、これらの呼出しで渡されたAttributedCharacterIterator
の開始インデックスと終了インデックスが使用されます。
ほとんどのクライアントは、標準改行ポリシー(各行に配置できるだけの文字を配置)を実装する便利なLineBreakMeasurer
を使用します。
- 導入されたバージョン:
- 1.3
- 関連項目:
-
コンストラクタのサマリー
コンストラクタ説明ソース・テキストからTextMeasurer
を構築します。 -
メソッドのサマリー
修飾子と型メソッド説明protected Object
clone()
このオブジェクトのコピーを作成して、返します。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
を更新します。
-
コンストラクタの詳細
-
TextMeasurer
public TextMeasurer(AttributedCharacterIterator text, FontRenderContext frc) ソース・テキストからTextMeasurer
を構築します。 ソース・テキストは1段落全体になります。- パラメータ:
text
- ソース段落。 nullは不可。frc
- テキストを正確に測定するために必要なグラフィックス・デバイスに関する情報。 nullは不可。
-
-
メソッドの詳細
-
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
によって返されたオブジェクトを返す前に、その1つ以上のフィールドを変更することが必要になる場合があります。 これは、通常、複製するオブジェクトの内部「深層構造」を構成する可変オブジェクトのコピー、およびこれらのオブジェクトへの参照をコピーへの参照に置き換えることを意味します。 クラスにプリミティブ・フィールドまたは不変オブジェクトへの参照しか含まれていない場合は、通常、super.clone
によって返されたオブジェクト内のフィールドを変更する必要がありません。 -
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
までの文字を含む行のグラフィック幅を返します。start
とlimit
は絶対インデックスで、段落の開始位置を基準にしたものではありません。- パラメータ:
start
- 測定を開始する位置の文字インデックスlimit
- 測定を終了する位置の文字インデックス- 戻り値:
start
で始まり、limit
までの文字を含む行のグラフィック幅- 例外:
IndexOutOfBoundsException
-limit
がstart
より前の場合IllegalArgumentException
-start
またはlimit
が段落の開始位置と終了位置の間にない場合。
-
getLayout
public TextLayout getLayout(int start, int limit) 指定された文字範囲のTextLayout
を返します。- パラメータ:
start
- 最初の文字のインデックスlimit
- 最後の文字の次のインデックス。 これはstart
より大きくなければならない- 戻り値:
start
から始まり、limit
までの(ただしlimitは含みません)文字のTextLayout
- 例外:
IndexOutOfBoundsException
-limit
がstart
より前の場合IllegalArgumentException
-start
またはlimit
が段落の開始位置と終了位置の間にない場合。
-
insertChar
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
である場合
-
deleteChar
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
である場合
-