|
JavaTM 2 Platform Std. Ed. v1.3 |
|||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 内部クラス | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
java.lang.Object | +--java.awt.font.TextLayout
TextLayout
は、書式付き文字データの不変のグラフィック表現です。
このクラスは次の機能を提供します。
TextLayout
オブジェクトは、draw
メソッドを使用して描画できます。
TextLayout
は、直接または LineBreakMeasurer
を介して作成できます。直接作成される場合、ソーステキストは 1 つの段落を表します。LineBreakMeasurer
では、特定の幅に収まる複数の行に書式付きテキストを分割できます。詳細は、LineBreakMeasurer
のドキュメントを参照してください。
TextLayout
の構築は、論理的には次の順序で行われます。
TextAttribute.FONT
がある場合はフォントが使用され、そうでない場合は、定義済みの属性を使用してデフォルトフォントが計算される
TextLayout
オブジェクトのメソッドから返されるすべてのグラフィック情報は、TextLayout
オブジェクトのベースラインと左端の交点である TextLayout
の原点を基準にしています。また、TextLayout
オブジェクトのメソッドに渡される座標は、TextLayout
オブジェクトの原点を基準にしていると仮定されます。通常、クライアントは、TextLayout
オブジェクトの座標系と別のオブジェクト (Graphics
オブジェクトなど) の座標系との間の平行移動を行う必要があります。
TextLayout
オブジェクトは、書式付きテキストから構築されますが、ソーステキストへの参照は保持しません。このため、TextLayout
を生成するために使用されたテキストにその後変更が加えられても、TextLayout
に影響はありません。
TextLayout
オブジェクトの 3 つのメソッド (getNextRightHit
、getNextLeftHit
、および hitTestChar
) は、TextHitInfo
のインスタンスを返します。それらの TextHitInfo
オブジェクトに含まれるオフセットは、TextLayout
を作成するために使用されたテキストではなく、TextLayout
の先頭を基準にします。同じように、TextHitInfo
のインスタンスをパラメータとして受け取る TextLayout
のメソッドも、TextHitInfo
オブジェクトのオフセットの基準は TextLayout
であり、基本となるテキストストレージモデルではないと想定します。
例:
TextLayout
とその境界の矩形の作成および描画
Graphics2D g = ...; Point2D loc = ...; Font font = Font.getFont("Helvetica-bold-italic"); FontRenderContext frc = g.getFontRenderContext(); TextLayout layout = new TextLayout("This is a string", font, frc); layout.draw(g, loc.getX(), loc.getY()); Rectangle2D bounds = layout.getBounds(); bounds.setRect(bounds.getX()+loc.getX(), bounds.getY()+loc.getY(), bounds.getWidth(), bounds.getHeight()) g.draw(bounds);
TextLayout
でヒットをテストします (特定のグラフィック位置にある文字を判定する)。
Point2D click = ...; TextHitInfo hit = layout.hitTestChar( (float) (click.getX() - loc.getX()), (float) (click.getY() - loc.getY()));
右矢印キーが押されたことに反応します。
ソーステキストの部分文字列に対応する選択範囲を描画します。選択された領域は、視覚的に連続していない場合があります。
視覚的に連続した選択範囲を描画します。選択範囲は、ソーステキストの複数の部分文字列に対応することがあります。対応するソーステキストの部分文字列の範囲は、
すべてのテキストは、指定された属性により書式が設定されます。
反復子は、1 段落のテキストを指定する必要があります。双方向アルゴリズムでは、段落全体が要求されるからです。
この
コードによっては、レイアウトの不変性に依存する場合があります。サブクラサはこのメソッドを直接呼び出すのではなく、getJustifiedLayout を呼び出した方がよいでしょう。getJustifiedLayout は、このレイアウトの複製に対してこのメソッドを呼び出すので、元のレイアウトは保存されます。
この配列は、
レディングは、
このメソッドは、情報のためだけに使用されます。キャレットを表示するには、
選択範囲に、左端 (上端) の位置が含まれる場合、その選択範囲は
選択範囲は常に連続していますが、混合方向テキストの行の場合、論理的に選択されたテキストは不連続になることがあります。選択されたテキストの論理的な範囲は、
選択範囲に最初の論理文字が含まれている場合、その選択範囲はこの
混合方向テキストの行の場合、選択範囲が不連続になることがあります。先頭とリミットの間の論理的な範囲に位置する文字だけが選択されているように見えます。たとえば、「ABCdef」というテキストを例に考えてみます。大文字は右から左のテキストを示し、右から左の行で描画され、論理的な選択範囲は 0 〜 4 (ABCd) です。テキストは次のように表示されます。選択範囲はボールドで表示され、拡張部分は下線で表示されます。
Java、Java 2D、JDBC は、米国およびその他の国における米国 Sun Microsystems, Inc. の商標もしくは登録商標です。
int insertionIndex = ...;
TextHitInfo next = layout.getNextRightHit(insertionIndex);
if (next != null) {
// translate graphics to origin of layout on screen
g.translate(loc.getX(), loc.getY());
Shape[] carets = layout.getCaretShapes(next.getInsertionIndex());
g.draw(carets[0]);
if (carets[1] != null) {
g.draw(carets[1]);
}
}
// selStart, selLimit should be relative to the layout,
// not to the source text
int selStart = ..., selLimit = ...;
Color selectionColor = ...;
Shape selection = layout.getLogicalHighlightShape(selStart, selLimit);
// selection may consist of disjoint areas
// graphics is assumed to be tranlated to origin of layout
g.setColor(selectionColor);
g.fill(selection);
getLogicalRangesForVisualSelection
により取得できます。
TextHitInfo selStart = ..., selLimit = ...;
Shape selection = layout.getVisualHighlightShape(selStart, selLimit);
g.setColor(selectionColor);
g.fill(selection);
int[] ranges = getLogicalRangesForVisualSelection(selStart, selLimit);
// ranges[0], ranges[1] is the first selection range,
// ranges[2], ranges[3] is the second selection range, etc.
内部クラスの概要
static class
TextLayout.CaretPolicy
強いキャレットの位置を判定するためのポリシーを定義します。
フィールドの概要
static TextLayout.CaretPolicy
DEFAULT_CARET_POLICY
この CaretPolicy
は、ポリシーがクライアントによって指定されていない場合に使用されます。
コンストラクタの概要
TextLayout(AttributedCharacterIterator text,
FontRenderContext frc)
書式付きテキストの反復子から TextLayout
を構築します。
TextLayout(String string,
Font font,
FontRenderContext frc)
String
および Font
から TextLayout
を構築します。
TextLayout(String string,
Map attributes,
FontRenderContext frc)
String
および属性セットから TextLayout
を構築します。
メソッドの概要
protected Object
clone()
この TextLayout
のコピーを作成します。
void
draw(Graphics2D g2,
float x,
float y)
指定された Graphics2D
コンテキストの指定された位置にこの TextLayout
を描画します。
boolean
equals(Object obj)
指定された Object
が TextLayout
オブジェクトで、指定された Object
がこの TextLayout
と等しい場合に true
を返します。
boolean
equals(TextLayout rhs)
2 つのレイアウトが等しい場合に true
を返します。
float
getAdvance()
この TextLayout
の有効幅を返します。
float
getAscent()
この TextLayout
のアセントを返します。
byte
getBaseline()
この TextLayout
のベースラインを返します。
float[]
getBaselineOffsets()
この TextLayout
で使用されるベースラインのオフセット配列を返します。
Shape
getBlackBoxBounds(int firstEndpoint,
int secondEndpoint)
指定された範囲にあるすべての文字のブラックボックス境界を返します。
Rectangle2D
getBounds()
この TextLayout
の境界を返します。
float[]
getCaretInfo(TextHitInfo hit)
hit
に対応するキャレットについての情報を返します。
float[]
getCaretInfo(TextHitInfo hit,
Rectangle2D bounds)
hit
に対応するキャレットについての情報を返します。
Shape
getCaretShape(TextHitInfo hit)
この TextLayout
の自然境界内の指定されたヒットにあるキャレットを表す Shape
を返します。
Shape
getCaretShape(TextHitInfo hit,
Rectangle2D bounds)
指定された境界内の指定されたヒットにあるキャレットを表す Shape
を返します。
Shape[]
getCaretShapes(int offset)
強いキャレットと弱いキャレットに対応する 2 つの輪郭線を返します。
Shape[]
getCaretShapes(int offset,
Rectangle2D bounds)
強いキャレットと弱いキャレットに対応する 2 つの輪郭線を返します。
Shape[]
getCaretShapes(int offset,
Rectangle2D bounds,
TextLayout.CaretPolicy policy)
強いキャレットと弱いキャレットに対応する 2 つの輪郭線を返します。
int
getCharacterCount()
この TextLayout
が表す文字数を返します。
byte
getCharacterLevel(int index)
index
にある文字のレベルを返します。
float
getDescent()
この TextLayout
のディセントを返します。
TextLayout
getJustifiedLayout(float justificationWidth)
指定された幅に行揃えされた、この TextLayout
のコピーを作成します。
float
getLeading()
TextLayout
のレディングを返します。
Shape
getLogicalHighlightShape(int firstEndpoint,
int secondEndpoint)
指定された範囲の論理的な選択範囲を囲む Shape
を、この TextLayout
の自然境界まで拡張して返します。
Shape
getLogicalHighlightShape(int firstEndpoint,
int secondEndpoint,
Rectangle2D bounds)
指定された範囲の論理的な選択範囲を囲む Shape
を、指定された bounds
まで拡張して返します。
int[]
getLogicalRangesForVisualSelection(TextHitInfo firstEndpoint,
TextHitInfo secondEndpoint)
視覚的な選択範囲に対応するテキストの論理的な範囲を返します。
TextHitInfo
getNextLeftHit(int offset)
左 (上) 方向の次のキャレットのヒットを返します。
TextHitInfo
getNextLeftHit(int offset,
TextLayout.CaretPolicy policy)
左 (上) 方向の次のキャレットのヒットを返します。
TextHitInfo
getNextLeftHit(TextHitInfo hit)
左 (上) 方向の次のキャレットのヒットを返します。
TextHitInfo
getNextRightHit(int offset)
右 (下) 方向の次のキャレットのヒットを返します。
TextHitInfo
getNextRightHit(int offset,
TextLayout.CaretPolicy policy)
右 (下) 方向の次のキャレットのヒットを返します。
TextHitInfo
getNextRightHit(TextHitInfo hit)
右 (下) 方向の次のキャレットのヒットを返します。
Shape
getOutline(AffineTransform tx)
この TextLayout
の輪郭を表す Shape
を返します。
float
getVisibleAdvance()
この TextLayout
の有効幅を返します。
Shape
getVisualHighlightShape(TextHitInfo firstEndpoint,
TextHitInfo secondEndpoint)
指定された範囲の視覚的な選択範囲を囲む Shape
を、境界まで拡張して返します。
Shape
getVisualHighlightShape(TextHitInfo firstEndpoint,
TextHitInfo secondEndpoint,
Rectangle2D bounds)
指定された範囲の視覚的な選択範囲を囲む輪郭線を、bounds
まで拡張して返します。
TextHitInfo
getVisualOtherHit(TextHitInfo hit)
指定されたヒットのキャレットの反対側のヒットを返します。
protected void
handleJustify(float justificationWidth)
このレイアウトを行揃えします。
int
hashCode()
この TextLayout
のハッシュコードを返します。
TextHitInfo
hitTestChar(float x,
float y)
指定された点に対応する TextHitInfo
を返します。
TextHitInfo
hitTestChar(float x,
float y,
Rectangle2D bounds)
指定された点に対応する TextHitInfo
を返します。
boolean
isLeftToRight()
この TextLayout
のベースとなる方向が左から右の場合に true
を返し、右から左の場合に false
を返します。
boolean
isVertical()
この TextLayout
が垂直の場合に true
を返します。
String
toString()
この TextLayout
のデバッグ情報を返します。
クラス java.lang.Object から継承したメソッド
finalize, getClass, notify, notifyAll, wait, wait, wait
フィールドの詳細
DEFAULT_CARET_POLICY
public static final TextLayout.CaretPolicy DEFAULT_CARET_POLICY
CaretPolicy
は、ポリシーがクライアントによって指定されていない場合に使用されます。このポリシーでは、方向が行の方向と同じ文字のヒットが、反対方向の文字のヒットより強くなります。文字の方向が同じ場合、文字のリーディングエッジのヒットの方が、文字のトレーリングエッジのヒットより強くなります。
コンストラクタの詳細
TextLayout
public TextLayout(String string,
Font font,
FontRenderContext frc)
String
および Font
から TextLayout
を構築します。すべてのテキストは、指定された Font
を使用して書式が設定されます。
String
には、1 段落のテキストを指定する必要があります。双方向アルゴリズムでは、段落全体が要求されるからです。
str
- 表示するテキストfont
- テキストの書式を設定するために使用される Font
frc
- テキストを正確に測定するために必要なグラフィックスデバイスに関する情報があります。テキスト測定は、デバイスの解像度によりわずかに異なり、アンチエイリアスなどの属性によっても異なります。このパラメータは、TextLayout
とユーザ空間の間の移動は指定しません。
TextLayout
public TextLayout(String string,
Map attributes,
FontRenderContext frc)
String
および属性セットから TextLayout
を構築します。
string
には、1 段落のテキストを指定する必要があります。双方向アルゴリズムでは、段落全体が要求されるからです。
str
- 表示するテキストattributes
- テキストの書式を設定するために使用される属性frc
- テキストを正確に測定するために必要なグラフィックスデバイスに関する情報があります。テキスト測定は、デバイスの解像度によりわずかに異なり、アンチエイリアスなどの属性によっても異なります。このパラメータは、TextLayout
とユーザ空間の間の移動は指定しません。
TextLayout
public TextLayout(AttributedCharacterIterator text,
FontRenderContext frc)
TextLayout
を構築します。
text
- 表示する書式付きテキストfrc
- テキストを正確に測定するために必要なグラフィックスデバイスに関する情報があります。テキスト測定は、デバイスの解像度によりわずかに異なり、アンチエイリアスなどの属性によっても異なります。このパラメータは、TextLayout
とユーザ空間の間の移動は指定しません。
メソッドの詳細
clone
protected Object clone()
TextLayout
のコピーを作成します。java.lang.Object
からコピーされたタグ:
CloneNotSupportedException
- オブジェクトのクラスが Cloneable
インタフェースをサポートしていない場合。clone
メソッドをオーバーライドしたサブクラスも、インスタンスを複製できないことを示すためにこの例外をスローすることがあるOutOfMemoryError
- 十分なメモリがない場合Cloneable
getJustifiedLayout
public TextLayout getJustifiedLayout(float justificationWidth)
TextLayout
のコピーを作成します。
TextLayout
がすでに行揃えされている場合は例外がスローされます。この TextLayout
オブジェクトの行揃え比率がゼロの場合、この TextLayout
と同一の TextLayout
が返されます。
justificationWidth
- 行を行揃えするために使用する幅。最良の結果を得るためには、行の現在の有効幅との違いは小さい方がよいTextLayout
Error
- このレイアウトがすでに行揃えされている場合、Error がスローされます。
handleJustify
protected void handleJustify(float justificationWidth)
justificationWidth
- 行を行揃えするために使用する幅。最良の結果を得るためには、行の現在の有効幅との違いは小さい方がよいgetJustifiedLayout(float)
getBaseline
public byte getBaseline()
TextLayout
のベースラインを返します。ベースラインは、Font
で定義される値 (roman、centered、hanging) の 1 つです。アセントおよびディセントは、このベースラインを基準にします。baselineOffsets
もこのベースラインを基準にします。
TextLayout
のベースラインgetBaselineOffsets()
,
Font
getBaselineOffsets
public float[] getBaselineOffsets()
TextLayout
で使用されるベースラインのオフセット配列を返します。
Font
で定義される値 (roman、centered、hanging) の 1 つでインデックス付けされます。これらの値は、この TextLayout
オブジェクトのベースラインを基準にします。そのため、getBaselineOffsets[getBaseline()] == 0
となります。オフセットを TextLayout
オブジェクトのベースラインの位置に加算すると、新しいベースラインの位置を取得できます。
TextLayout
に使用されるベースラインを格納するオフセット配列getBaseline()
,
Font
getAdvance
public float getAdvance()
TextLayout
の有効幅を返します。有効幅は、行の方向で測定した、原点から右端 (下端) の文字の有効幅までの距離です。
TextLayout
の有効幅
getVisibleAdvance
public float getVisibleAdvance()
TextLayout
の有効幅を返します。末尾の空白は含まれません。
TextLayout
の末尾の空白を除いた有効幅getAdvance()
getAscent
public float getAscent()
TextLayout
のアセントを返します。アセントは、TextLayout
の上 (右) からベースラインまでの距離です。この距離は常に正の値またはゼロです。アセントは、上付きテキストを格納するために十分な大きさであり、各グリフのアセント、オフセット、およびベースラインの合計の最大値です。
TextLayout
のアセント
getDescent
public float getDescent()
TextLayout
のディセントを返します。ディセントは、ベースラインから TextLayout
の下 (左) までの距離です。この距離は常に正の値またはゼロです。ディセントは、下付きテキストを格納するために十分な大きさであり、各グリフのディセント、オフセット、およびベースラインの合計の最大値です。
TextLayout
のディセント
getLeading
public float getLeading()
TextLayout
のレディングを返します。レディングは、この TextLayout
用として推奨されている行間スペースです。
TextLayout
のすべてのグリフベクトルのレディング、ディセント、およびベースラインから計算されます。アルゴリズムは、およそ次のとおりです。
maxD = 0;
maxDL = 0;
for (GlyphVector g in all glyphvectors) {
maxD = max(maxD, g.getDescent() + offsets[g.getBaseline()]);
maxDL = max(maxDL, g.getDescent() + g.getLeading() +
offsets[g.getBaseline()]);
}
return maxDL - maxD;
TextLayout
の先頭
getBounds
public Rectangle2D getBounds()
TextLayout
の境界を返します。境界には、TextLayout
が描画できるすべてのピクセルが含まれます。TextLayout
のアセント、ディセント、原点、または有効幅と完全には一致しない場合があります。
TextLayout
の境界である Rectangle2D
isLeftToRight
public boolean isLeftToRight()
TextLayout
のベースとなる方向が左から右の場合に true
を返し、右から左の場合に false
を返します。TextLayout
には、左から右 (LTR) または右から左 (RTL) のどちらかのベースとなる方向があります。ベースとなる方向は、行のテキストの実際の方向 (LTR、RTL、または混合) には依存しません。左から右のレイアウトは、デフォルトでは左端揃えになります。レイアウトがタブ付きの行に置かれた場合、タブは左から右になるので、論理的に連続するレイアウトは左から右に配置されます。RTL レイアウトの場合はこの反対です。この場合、デフォルトでは右端揃え、タブは右から左になります。
TextLayout
のベースとなる方向が左から右の場合は true
、そうでない場合は false
isVertical
public boolean isVertical()
TextLayout
が垂直の場合に true
を返します。
TextLayout
が垂直の場合は true
、そうでない場合は false
getCharacterCount
public int getCharacterCount()
TextLayout
が表す文字数を返します。
TextLayout
の文字数
getCaretInfo
public float[] getCaretInfo(TextHitInfo hit,
Rectangle2D bounds)
hit
に対応するキャレットについての情報を返します。配列の最初の要素は、キャレットとベースラインの交点です。配列の 2 番目の要素は、キャレットの逆傾き (ラン/ライズ) です。
getCaretShapes
を使用してください。
hit
- この TextLayout
の文字のヒットbounds
- キャレット情報が構築される境界getCaretShapes(int, Rectangle2D, TextLayout.CaretPolicy)
,
Font.getItalicAngle()
getCaretInfo
public float[] getCaretInfo(TextHitInfo hit)
hit
に対応するキャレットについての情報を返します。このメソッドは、getCaretInfo
の簡易オーバーロードであり、この TextLayout
の自然境界を使用します。
hit
- この TextLayout
の文字のヒット
getNextRightHit
public TextHitInfo getNextRightHit(TextHitInfo hit)
null
を返します。ヒット文字のインデックスが境界内にない場合は、IllegalArgumentException
がスローされます。
hit
- このレイアウトの文字のヒットnull
getNextRightHit
public TextHitInfo getNextRightHit(int offset,
TextLayout.CaretPolicy policy)
null
が返されます。ヒットは、指定されたポリシーによる、指定されたオフセット位置の強いキャレットの右側にあります。返されるヒットは、指定されたポリシーによる、2 つのヒットの強い方です。
offset
- この TextLayout
の挿入オフセット。0 より小さい値や TextLayout
オブジェクトの文字カウントより大きな値は不可policy
- 強いキャレットを選択するために使用されるポリシーnull
getNextRightHit
public TextHitInfo getNextRightHit(int offset)
null
が返されます。ヒットは、デフォルトのポリシーによる、指定されたオフセット位置の強いキャレットの右にあります。返されるヒットは、デフォルトのポリシーによる、2 つのヒットの強い方です。
offset
- この TextLayout
の挿入オフセット。0 より小さい値や TextLayout
オブジェクトの文字カウントより大きな値は不可null
getNextLeftHit
public TextHitInfo getNextLeftHit(TextHitInfo hit)
null
が返されます。ヒット文字のインデックスが境界内にない場合は、IllegalArgumentException
がスローされます。
hit
- この TextLayout
の文字のヒットnull
getNextLeftHit
public TextHitInfo getNextLeftHit(int offset,
TextLayout.CaretPolicy policy)
null
が返されます。ヒットは、指定されたポリシーによる、指定されたオフセット位置の強いキャレットの左にあります。返されるヒットは、指定されたポリシーによる、2 つのヒットの強い方です。
offset
- この TextLayout
の挿入オフセット。0 より小さい値や TextLayout
オブジェクトの文字カウントより大きな値は不可policy
- 強いキャレットを選択するために使用されるポリシーnull
getNextLeftHit
public TextHitInfo getNextLeftHit(int offset)
null
が返されます。ヒットは、デフォルトのポリシーによる、指定されたオフセット位置の強いキャレットの左です。返されるヒットは、デフォルトのポリシーによる、2 つのヒットの強い方です。
offset
- この TextLayout
の挿入オフセット。0 より小さい値や TextLayout
オブジェクトの文字カウントより大きな値は不可null
getVisualOtherHit
public TextHitInfo getVisualOtherHit(TextHitInfo hit)
hit
- 指定されたヒット
getCaretShape
public Shape getCaretShape(TextHitInfo hit,
Rectangle2D bounds)
Shape
を返します。
hit
- キャレットを生成するヒットbounds
- キャレットの生成で使用する TextLayout
の境界Shape
getCaretShape
public Shape getCaretShape(TextHitInfo hit)
TextLayout
の自然境界内の指定されたヒットにあるキャレットを表す Shape
を返します。
hit
- キャレットを生成するヒットShape
getCharacterLevel
public byte getCharacterLevel(int index)
index
にある文字のレベルを返します。インデックス -1 および characterCount
には、この TextLayout
の基底レベルが割り当てられます。
index
- レベルを取得する文字のインデックス
getCaretShapes
public Shape[] getCaretShapes(int offset,
Rectangle2D bounds,
TextLayout.CaretPolicy policy)
offset
- この TextLayout
のオフセットbounds
- キャレットを拡張する境界policy
- 指定した CaretPolicy
null
getCaretShapes
public Shape[] getCaretShapes(int offset,
Rectangle2D bounds)
getCaretShapes
の簡易オーバーロードであり、デフォルトのキャレットポリシーを使用します。
offset
- この TextLayout
のオフセットbounds
- キャレットを拡張する境界DEFAULT_CARET_POLICY
での定義による、強いキャレットと弱いキャレットに対応する 2 つのパス
getCaretShapes
public Shape[] getCaretShapes(int offset)
getCaretShapes
の簡易オーバーロードであり、デフォルトのキャレットポリシーおよびこの TextLayout
オブジェクトの自然境界を使用します。
offset
- この TextLayout
のオフセットbounds
- キャレットを拡張する境界DEFAULT_CARET_POLICY
での定義による、強いキャレットと弱いキャレットに対応する 2 つのパス
getLogicalRangesForVisualSelection
public int[] getLogicalRangesForVisualSelection(TextHitInfo firstEndpoint,
TextHitInfo secondEndpoint)
firstEndpoint
- 視覚的な範囲の一方の端点secondEndpoint
- 視覚的な範囲のもう一方の端点 firstEndpoint
より小さくても可getVisualHighlightShape(TextHitInfo, TextHitInfo, Rectangle2D)
getVisualHighlightShape
public Shape getVisualHighlightShape(TextHitInfo firstEndpoint,
TextHitInfo secondEndpoint,
Rectangle2D bounds)
bounds
まで拡張して返します。
bounds
の左 (上) まで拡張されます。その選択範囲に右端 (下端) の位置が含まれる場合、選択範囲は境界の右 (下) まで拡張されます。選択範囲の高さ (垂直線上の幅) は、常に bounds
まで拡張されます。
getLogicalRangesForVisualSelection
を使用して取得できます。たとえば、「ABCdef」というテキストを例に考えてみます。大文字は右から左のテキストを示し、右から左の行で描画され、視覚的な選択範囲は 0L (「A」のリーディングエッジ) から 3T (「d」のトレーリングエッジ) です。このテキストは次のように表示されます。下線付きボールドの領域は選択範囲を示しています。
defCBA
論理的な選択範囲は、0 〜 3、4 〜 6 (ABC、ef) です。なぜなら、視覚的に連続したテキストは論理的には不連続だからです。また、レイアウトの右端の位置 (「A」の右側) が選択されているので、選択範囲は境界の右まで拡張されます。
firstEndpoint
- 視覚的な選択範囲の一方の端点secondEndpoint
- 視覚的な選択範囲のもう一方の端点bounds
- 選択範囲が拡張される境界の矩形Shape
getLogicalRangesForVisualSelection(TextHitInfo, TextHitInfo)
,
getLogicalHighlightShape(int, int, Rectangle2D)
getVisualHighlightShape
public Shape getVisualHighlightShape(TextHitInfo firstEndpoint,
TextHitInfo secondEndpoint)
Shape
を、境界まで拡張して返します。このメソッドは、getVisualHighlightShape
の簡易オーバーロードであり、この TextLayout
の自然境界を使用します。
firstEndpoint
- 視覚的な選択範囲の一方の端点secondEndpoint
- 視覚的な選択範囲のもう一方の端点Shape
getLogicalHighlightShape
public Shape getLogicalHighlightShape(int firstEndpoint,
int secondEndpoint,
Rectangle2D bounds)
Shape
を、指定された bounds
まで拡張して返します。
TextLayout
の先頭の前の bounds
の部分まで拡張されます。選択範囲に最後の論理文字が含まれている場合、その選択範囲はこの TextLayout
の最後のあとの bounds
の部分まで拡張されます。選択範囲の高さ (垂直線上の幅) は、常に bounds
まで拡張されます。
defCBA
選択範囲は不連続です。その理由は、選択された文字が視覚的に不連続だからです。また、選択範囲に最初の論理文字 (A) が含まれるため、選択範囲はレイアウトの先頭より前の bounds
の部分まで拡張されます。この場合 (右から左の行) は、bounds
の右の部分です。
firstEndpoint
- 選択する文字の範囲の端点secondEndpoint
- 選択する文字の範囲のもう一方の端点 firstEndpoint
より小さくても可。min(firstEndpoint, secondEndpoint) の文字は範囲に含まれるが、max(firstEndpoint, secondEndpoint) は範囲から除外されるbounds
- 選択範囲が拡張される境界の矩形getVisualHighlightShape(TextHitInfo, TextHitInfo, Rectangle2D)
getLogicalHighlightShape
public Shape getLogicalHighlightShape(int firstEndpoint,
int secondEndpoint)
Shape
を、この TextLayout
の自然境界まで拡張して返します。このメソッドは、getLogicalHighlightShape
の簡易オーバーロードであり、この TextLayout
の自然境界を使用します。
firstEndpoint
- 選択する文字の範囲の端点secondEndpoint
- 選択する文字の範囲のもう一方の端点 firstEndpoint
より小さくても可。min(firstEndpoint, secondEndpoint) の文字は範囲に含まれるが、max(firstEndpoint, secondEndpoint) は範囲から除外されるShape
getBlackBoxBounds
public Shape getBlackBoxBounds(int firstEndpoint,
int secondEndpoint)
firstEndpoint
- 文字の範囲の一方の端点secondEndpoint
- 文字の範囲のもう一方の端点 firstEndpoint
より小さくても可パス
hitTestChar
public TextHitInfo hitTestChar(float x,
float y,
Rectangle2D bounds)
TextHitInfo
を返します。TextLayout
の境界の外側の座標は、行の文字の位置に関係なく、最初の論理文字のリーディングエッジ、または最後の論理文字のトレーリングエッジのどちらか適切な方のヒットに対応します。ベースラインに沿った方向だけが、この評価に使用されます。
x
- この TextLayout
の原点からの x オフセットy
- この TextLayout
の原点からの y オフセットbounds
- TextLayout
の境界
hitTestChar
public TextHitInfo hitTestChar(float x,
float y)
TextHitInfo
を返します。このメソッドは、hitTestChar
の簡易オーバーロードであり、この TextLayout
の自然な境界を使用します。
x
- この TextLayout
の原点からの x オフセットy
- この TextLayout
の原点からの y オフセット
hashCode
public int hashCode()
equals
public boolean equals(Object obj)
Object
が TextLayout
オブジェクトで、指定された Object
がこの TextLayout
と等しい場合に true
を返します。
obj
- 等しいかどうかが判定される Object
Object
がこの TextLayout
と等しい場合は true
、そうでない場合は false
equals
public boolean equals(TextLayout rhs)
true
を返します。2 つのレイアウトは、それらが同じ順序で同じグリフベクトルを格納している場合に等しくなります。
rhs
- この TextLayout
と比較する TextLayout
TextLayout
がこの TextLayout
と等しい場合は true
toString
public String toString()
TextLayout
のデバッグ情報を返します。
TextLayout
の textLine
を表す String
draw
public void draw(Graphics2D g2,
float x,
float y)
Graphics2D
コンテキストの指定された位置にこの TextLayout
を描画します。レイアウトの原点は x, y です。描画は、この位置の getBounds()
内の任意の点に接します。g2
は変更されません。
g2
- レイアウトの描画先の Graphics2D
コンテキストx, y
- この TextLayout
の原点の座標getBounds()
getOutline
public Shape getOutline(AffineTransform tx)
TextLayout
の輪郭を表す Shape
を返します。
tx
- この TextLayout
の輪郭に適用する任意指定の AffineTransform
TextLayout
の輪郭である Shape
概要
パッケージ
クラス
使用
階層ツリー
非推奨 API
索引
ヘルプ
JavaTM 2 Platform
Std. Ed. v1.3
前のクラス
次のクラス
フレームあり
フレームなし
概要: 内部クラス | フィールド | コンストラクタ | メソッド
詳細: フィールド | コンストラクタ | メソッド
バグや機能要求の報告
さらに詳しい API リファレンスおよび開発者ドキュメントについては、 Java 2 SDK SE Developer Documentation を参照してください。このドキュメントには、概念、用語の定義、回避策、 実用的なコード例など、開発者を対象にした詳細な解説が掲載されています。
Copyright 1993-2000 Sun Microsystems, Inc. 901 San Antonio Road,
Palo Alto, California, 94303, U.S.A. All Rights Reserved.