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()
Object
x
について、次の式
が 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 は含まない) 文字の TextLayout
IndexOutOfBoundsException
- 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, 2013, Oracle and/or its affiliates. All rights reserved.