クラスは、有効幅の測定、文字範囲の有効幅の指定、文字範囲の TextLayout
の作成など、改行に必要な基本操作を提供します。パラグラフが増えた場合の編集メソッドも提供します。
TextMeasurer
オブジェクトは、テキストの 1 つのパラグラフを表す AttributedCharacterIterator
で構築します。AttributedCharacterIterator
の getBeginIndex
メソッドが返す値は、最初の文字の絶対インデックスを定義します。AttributedCharacterIterator
の getEndIndex
メソッドが返す値は、最後の文字の次のインデックスを定義します。これらの値によって、TextMeasurer
を呼び出すときに使用するインデックスの範囲が定義されます。たとえば、テキストの範囲の有効幅、つまりテキストの範囲の改行を取得するための呼び出しでは、開始インデックス値と終了インデックス値の間のインデックスを使用する必要があります。insertChar
および deleteChar
を呼び出すと、TextMeasurer
がリセットされ、これらの呼び出しで渡された AttributedCharacterIterator
の開始インデックスと終了インデックスが使用されます。
ほとんどのクライアントは、標準改行 (各行に配置できるだけの文字を配置) を実装する便利な LineBreakMeasurer
を使用します。
- 導入されたバージョン:
- 1.3
- 関連項目:
LineBreakMeasurer
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 により返されるオブジェクト内のフィールドを変更する必要はありません。
Object クラスの clone メソッドは、特定の複製処理を実行します。まず、このオブジェクトのクラスが Cloneable インタフェースを実装していない場合は、CloneNotSupportedException がスローされます。配列はすべて、インタフェース Cloneable を実装しているものと見なされることに注意してください。実装していない場合、このメソッドはこのオブジェクトのクラスの新しいインスタンスを生成し、そのフィールドをすべて、このオブジェクトの対応する各フィールドの内容で初期化します。これは代入と同様で、フィールドの内容自身が複製されるのではありません。つまりこのメソッドは、オブジェクトのシャローコピーを生成しますが、ディープコピーは生成しません。
クラス Object 自体は、Cloneable インタフェースを実装しないため、クラスが Object である clone メソッドを呼び出すと、実行時に例外がスローされます。
- オーバーライド:
- クラス
Object
内の clone
- 戻り値:
- このインスタンスの複製
- 関連項目:
Cloneable
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
より小さい文字の 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
の場合
バグの報告と機能のリクエスト
これ以外の API リファレンスおよび開発者用ドキュメントについては、 Java 2 SDK SE 開発者用ドキュメントを参照してください。 開発者向けの詳細な解説、概念の概要、用語の定義、バグの回避策、 およびコード実例が含まれています。 Java、Java 2D、および JDBC は米国ならびにその他の国における米国 Sun Microsystems, Inc. の商標もしくは登録商標です。
Copyright 1993-2002 Sun Microsystems, Inc. 901 San Antonio Road
Palo Alto, California, 94303, U.S.A. All Rights Reserved.