JavaTM 2
Platform
Std. Ed. v1.4.0

java.awt.font
クラス TextMeasurer

java.lang.Object
  |
  +--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(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 を更新します。
 
クラス java.lang.Object から継承したメソッド
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

コンストラクタの詳細

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 までの文字を含む行のグラフィック幅を返します。startlimit は絶対インデックスで、パラグラフのスタートには関連しません。

パラメータ:
start - 測定を開始する場所の文字インデックス
limit - 測定を終了する場所の文字インデックス
戻り値:
start から始まり、limit までの文字を含む行のグラフィック幅
例外:
IndexOutOfBoundsException - limitstart より前の場合
IllegalArgumentException - start または limit がパラグラフの開始位置と終了位置の間にない場合

getLayout

public TextLayout getLayout(int start,
                            int limit)
指定された文字範囲の TextLayout を返します。

パラメータ:
start - 最初の文字のインデックス
limit - テキスト内の最後の文字の次のインデックス。start より大きくなければならない
戻り値:
start から始まり、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 の場合

JavaTM 2
Platform
Std. Ed. v1.4.0

バグの報告と機能のリクエスト
これ以外の 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.