|
Java プラットフォーム 1.2 |
|||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | |||||||||
| 概要: 内部クラス | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | |||||||||
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()));
右矢印キーが押されたことに反応します。
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.
LineBreakMeasurer,
TextAttribute,
TextHitInfo| 内部クラスの概要 | |
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 |
| フィールドの詳細 |
public static final TextLayout.CaretPolicy DEFAULT_CARET_POLICY
CaretPolicy は、ポリシーがクライアントによって指定されていない場合に使用されます。このポリシーでは、方向が行の方向と同じ文字のヒットが、反対方向の文字のヒットより強くなります。文字の方向が同じ場合、文字のリーディングエッジのヒットの方が、文字のトレーリングエッジのヒットより強くなります。| コンストラクタの詳細 |
public TextLayout(String string,
Font font,
FontRenderContext frc)
String および Font から TextLayout を構築します。すべてのテキストは、指定された Font を使用して書式が設定されます。
String には、1 段落のテキストを指定する必要があります。双方向アルゴリズムでは、段落全体が要求されるからです。
str - 表示するテキストfont - テキストの書式を設定するために使用される Fontfrc - テキストの寸法を正確に測定するために必要な情報を格納する
public TextLayout(String string,
Map attributes,
FontRenderContext frc)
String および属性セットから TextLayout を構築します。
すべてのテキストは、指定された属性により書式が設定されます。
string には、1 段落のテキストを指定する必要があります。双方向アルゴリズムでは、段落全体が要求されるからです。
str - 表示するテキストattributes - テキストの書式を設定するために使用される属性frc - テキストの寸法を正確に測定するために必要な情報を格納する
public TextLayout(AttributedCharacterIterator text,
FontRenderContext frc)
TextLayout を構築します。
反復子は、1 段落のテキストを指定する必要があります。双方向アルゴリズムでは、段落全体が要求されるからです。
text - 表示する書式付きテキストfrc - テキストの寸法を正確に測定するために必要な情報を格納する| メソッドの詳細 |
protected Object clone()
TextLayout のコピーを作成します。public TextLayout getJustifiedLayout(float justificationWidth)
TextLayout のコピーを作成します。
この TextLayout がすでに行揃えされている場合は例外がスローされます。この TextLayout オブジェクトの行揃え比率がゼロの場合、この TextLayout と同一の TextLayout が返されます。
justificationWidth - 行を行揃えするときに使用する幅。最良の結果を得るためには、行の現在の有効幅と違いは小さい方がよいTextLayoutprotected void handleJustify(float justificationWidth)
コードによっては、レイアウトの不変性に依存する場合があります。サブクラサはこのメソッドを直接呼び出すのではなく、getJustifiedLayout を呼び出した方がよいでしょう。getJustifiedLayout は、このレイアウトの複製に対してこのメソッドを呼び出すので、元のレイアウトは保存されます。
justificationWidth - 行を行揃えするために使用する幅。最良の結果を得るためには、行の現在の有効幅との違いは小さい方がよいgetJustifiedLayout(float)public byte getBaseline()
TextLayout のベースラインを返します。ベースラインは、Font で定義される値 (roman、centered、hanging) の 1 つです。アセントおよびディセントは、このベースラインを基準にします。baselineOffsets もこのベースラインを基準にします。TextLayout のベースラインgetBaselineOffsets(),
Fontpublic float[] getBaselineOffsets()
TextLayout で使用されるベースラインのオフセット配列を返します。
この配列は、Font で定義される値 (roman、centered、hanging) の 1 つでインデックス付けされます。これらの値は、この TextLayout オブジェクトのベースラインを基準にします。そのため、getBaselineOffsets[getBaseline()] == 0 となります。オフセットを TextLayout オブジェクトのベースラインの位置に加算すると、新しいベースラインの位置を取得できます。
TextLayout に使用されるベースラインを格納するオフセット配列getBaseline(),
Fontpublic float getAdvance()
TextLayout の有効幅を返します。有効幅は、行の方向で測定した、原点から右端 (下端) の文字の有効幅までの距離です。TextLayout の有効幅public float getVisibleAdvance()
TextLayout の有効幅を返します。末尾の空白は含まれません。TextLayout の末尾の空白を除いた有効幅getAdvance()public float getAscent()
TextLayout のアセントを返します。アセントは、TextLayout の上 (右) からベースラインまでの距離です。この距離は常に正の値またはゼロです。アセントは、上付きテキストを格納するために十分な大きさであり、各グリフのアセント、オフセット、およびベースラインの合計の最大値です。TextLayout のアセントpublic float getDescent()
TextLayout のディセントを返します。ディセントは、ベースラインから TextLayout の下 (左) までの距離です。この距離は常に正の値またはゼロです。ディセントは、下付きテキストを格納するために十分な大きさであり、各グリフのディセント、オフセット、およびベースラインの合計の最大値です。TextLayout のディセント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 のレディングpublic Rectangle2D getBounds()
TextLayout の境界を返します。境界には、TextLayout が描画できるすべてのピクセルが含まれます。TextLayout のアセント、ディセント、原点、または有効幅と完全には一致しない場合があります。TextLayout の境界である Rectangle2Dpublic boolean isLeftToRight()
TextLayout のベースとなる方向が左から右の場合に true を返し、右から左の場合に false を返します。TextLayout には、左から右 (LTR) または右から左 (RTL) のどちらかのベースとなる方向があります。ベースとなる方向は、行のテキストの実際の方向 (LTR、RTL、または混合) には依存しません。左から右のレイアウトは、デフォルトでは左端揃えになります。レイアウトがタブ付きの行に置かれた場合、タブは左から右になるので、論理的に連続するレイアウトは左から右に配置されます。RTL レイアウトの場合はこの反対です。この場合、デフォルトでは右端揃え、タブは右から左になります。TextLayout のベースとなる方向が左から右の場合は true、そうでない場合は falsepublic boolean isVertical()
TextLayout が垂直の場合に true を返します。TextLayout が垂直の場合は true、そうでない場合は falsepublic int getCharacterCount()
TextLayout が表す文字数を返します。TextLayout の文字数
public float[] getCaretInfo(TextHitInfo hit,
Rectangle2D bounds)
hit に対応するキャレットについての情報を返します。配列の最初の要素は、キャレットとベースラインの交点です。配列の 2 番目の要素は、キャレットの傾き (ラン/ライズ) です。
このメソッドは、情報のためだけに使用されます。キャレットを表示するには、getCaretShapes を使用してください。
hit - この TextLayout の文字のヒットbounds - キャレット情報が構築される境界getCaretShapes(int, Rectangle2D, TextLayout.CaretPolicy)public float[] getCaretInfo(TextHitInfo hit)
hit に対応するキャレットについての情報を返します。このメソッドは、getCaretInfo の簡易オーバーロードであり、この TextLayout の自然境界を使用します。hit - この TextLayout の文字のヒットpublic TextHitInfo getNextRightHit(TextHitInfo hit)
null を返します。ヒット文字のインデックスが境界内にない場合は、IllegalArgumentException がスローされます。hit - このレイアウトの文字のヒットnull
public TextHitInfo getNextRightHit(int offset,
TextLayout.CaretPolicy policy)
null が返されます。ヒットは、指定されたポリシーによる、指定されたオフセット位置の強いキャレットの右側にあります。返されるヒットは、指定されたポリシーによる、2 つのヒットの強い方です。offset - この TextLayout の挿入オフセット。0 より小さい値やこの TextLayout オブジェクトの文字カウントより大きな値は不可policy - 強いキャレットを選択するために使用されるポリシーnullpublic TextHitInfo getNextRightHit(int offset)
null が返されます。ヒットは、デフォルトのポリシーによる、指定されたオフセット位置の強いキャレットの右にあります。返されるヒットは、デフォルトのポリシーによる、 2 つのヒットの強い方です。offset - この TextLayout の挿入オフセット。0 より小さい値や TextLayout オブジェクトの文字カウントより大きい値は不可nullpublic TextHitInfo getNextLeftHit(TextHitInfo hit)
null が返されます。ヒット文字のインデックスが境界内にない場合は、IllegalArgumentException がスローされます。hit - この TextLayout の文字のヒットnull
public TextHitInfo getNextLeftHit(int offset,
TextLayout.CaretPolicy policy)
null が返されます。ヒットは、指定されたポリシーによる、指定されたオフセット位置の強いキャレットの左にあります。返されるヒットは、指定されたポリシーによる、2 つのヒットの強い方です。offset - この TextLayout の挿入オフセット。0 より小さい値や TextLayout オブジェクトの文字カウントより大きい値は不可policy - 強いキャレットを選択するために使用されるポリシーnullpublic TextHitInfo getNextLeftHit(int offset)
null が返されます。ヒットは、デフォルトのポリシーによる、指定されたオフセット位置の強いキャレットの左です。返されるヒットは、デフォルトのポリシーによる、2 つのヒットの強い方です。offset - この TextLayout の挿入オフセット。0 より小さい値や TextLayout オブジェクトの文字カウントより大きな値は不可nullpublic TextHitInfo getVisualOtherHit(TextHitInfo hit)
hit - 指定されたヒット
public Shape getCaretShape(TextHitInfo hit,
Rectangle2D bounds)
Shape を返します。hit - キャレットを生成するヒットbounds - キャレットの生成で使用する TextLayout の境界Shapepublic Shape getCaretShape(TextHitInfo hit)
TextLayout の自然境界内の指定されたヒットにあるキャレットを表す Shape を返します。hit - キャレットを生成するヒットShapepublic byte getCharacterLevel(int index)
index にある文字のレベルを返します。インデックス -1 および characterCount には、この TextLayout の基底レベルが割り当てられます。index - レベルを取得する文字のインデックス
public Shape[] getCaretShapes(int offset,
Rectangle2D bounds,
TextLayout.CaretPolicy policy)
offset - この TextLayout に対するオフセットbounds - キャレットが拡張される境界policy - 指定された CaretPolicynull
public Shape[] getCaretShapes(int offset,
Rectangle2D bounds)
getCaretShapes の簡易オーバーロードであり、デフォルトのキャレットポリシーを使用します。offset - この TextLayout のオフセットbounds - キャレットを拡張する境界DEFAULT_CARET_POLICY での定義による、強いキャレットと弱いキャレットに対応する 2 つの輪郭線public Shape[] getCaretShapes(int offset)
getCaretShapes の簡易オーバーロードであり、デフォルトのキャレットポリシーおよびこの TextLayout オブジェクトの自然境界を使用します。offset - この TextLayout のオフセットbounds - キャレットを拡張する境界DEFAULT_CARET_POLICY での定義による、強いキャレットと弱いキャレットに対応する 2 つの輪郭線
public int[] getLogicalRangesForVisualSelection(TextHitInfo firstEndpoint,
TextHitInfo secondEndpoint)
firstEndpoint - 視覚的な範囲の一方の端点secondEndpoint - 視覚的な範囲のもう一方の端点。firstEndpoint より小さくても可getVisualHighlightShape(TextHitInfo, TextHitInfo, Rectangle2D)
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 - 選択範囲が拡張される境界の矩形ShapegetLogicalRangesForVisualSelection(TextHitInfo, TextHitInfo),
getLogicalHighlightShape(int, int, Rectangle2D)
public Shape getVisualHighlightShape(TextHitInfo firstEndpoint,
TextHitInfo secondEndpoint)
Shape を、境界まで拡張して返します。このメソッドは、getVisualHighlightShape の簡易オーバーロードであり、この TextLayout の自然境界を使用します。firstEndpoint - 視覚的な選択範囲の一方の端点secondEndpoint - 視覚的な選択範囲のもう一方の端点Shape
public Shape getLogicalHighlightShape(int firstEndpoint,
int secondEndpoint,
Rectangle2D bounds)
Shape を、指定された bounds まで拡張して返します。
選択範囲に最初の論理文字が含まれている場合、その選択範囲はこの TextLayout の先頭の前の bounds の部分まで拡張されます。選択範囲に最後の論理文字が含まれている場合、その選択範囲はこの TextLayout の最後のあとの bounds の部分まで拡張されます。選択範囲の高さ (垂直線上の幅) は、常に bounds まで拡張されます。
混合方向テキストの行の場合、選択範囲が不連続になることがあります。先頭とリミットの間の論理的な範囲に位置する文字だけが選択されているように見えます。たとえば、「ABCdef」というテキストを例に考えてみます。大文字は右から左のテキストを示し、右から左の行で描画され、論理的な選択範囲は 0 〜 4 (ABCd) です。テキストは次のように表示されます。選択範囲はボールドで表示され、拡張部分は下線で表示されます。
defCBA
選択範囲は不連続です。その理由は、選択された文字が視覚的に不連続だからです。また、選択範囲に最初の論理文字 (A) が含まれるため、選択範囲はレイアウトの先頭より前の bounds の部分まで拡張されます。この場合 (右から左の行) は、bounds の右の部分です。firstEndpoint - 選択する文字の範囲の一方の端点secondEndpoint - 選択する文字の範囲のもう一方の端点。firstEndpoint より小さくても可。min(firstEndpoint, secondEndpoint) の文字は範囲に含まれるが、max(firstEndpoint, secondEndpoint) は範囲から除外されるbounds - 選択範囲が拡張される境界の矩形getVisualHighlightShape(TextHitInfo, TextHitInfo, Rectangle2D)
public Shape getLogicalHighlightShape(int firstEndpoint,
int secondEndpoint)
Shape を、この TextLayout の自然境界まで拡張して返します。このメソッドは、getLogicalHighlightShape の簡易オーバーロードであり、この TextLayout の自然境界を使用します。firstEndpoint - 選択する文字の範囲の端点secondEndpoint - 選択する文字の範囲のもう一方の端点。firstEndpoint より小さくても可。min(firstEndpoint, secondEndpoint) の文字は範囲に含まれるが、max(firstEndpoint, secondEndpoint) は範囲から除外されるShape
public Shape getBlackBoxBounds(int firstEndpoint,
int secondEndpoint)
firstEndpoint - 文字の範囲の一方の端点secondEndpoint - 文字の範囲のもう一方の端点。firstEndpoint より小さくても可
public TextHitInfo hitTestChar(float x,
float y,
Rectangle2D bounds)
TextHitInfo を返します。TextLayout の境界の外側の座標は、行の文字の位置に関係なく、最初の論理文字のリーディングエッジ、または最後の論理文字のトレーリングエッジのどちらか適切な方のヒットに対応します。ベースラインに沿った方向だけが、この評価に使用されます。x - この TextLayout の原点からの x オフセットy - この TextLayout の原点からの y オフセットbounds - TextLayout の境界
public TextHitInfo hitTestChar(float x,
float y)
TextHitInfo を返します。このメソッドは、hitTestChar の簡易オーバーロードであり、この TextLayout の自然な境界を使用します。x - この TextLayout の原点からの x オフセットy - この TextLayout の原点からの y オフセットpublic int hashCode()
TextLayout のハッシュコードを返します。TextLayout のハッシュコードpublic boolean equals(Object obj)
Object が TextLayout オブジェクトで、指定された Object がこの TextLayout と等しい場合に true を返します。obj - 等しいかどうかが判定テストされる ObjectObject がこの TextLayout と等しい場合は true、そうでない場合は falsepublic boolean equals(TextLayout rhs)
true を返します。2 つのレイアウトは、それらが同じ順序で同じグリフベクトルを格納している場合に等しくなります。rhs - この TextLayout と比較する TextLayoutTextLayout がこの TextLayout と等しい場合は truepublic String toString()
TextLayout のデバッグ情報を返します。TextLayout の textLine を表す String
public void draw(Graphics2D g2,
float x,
float y)
TextLayout を描画します。レイアウトの原点は x, y です。描画は、この位置の getBounds 内の任意の点に接します。g2 は変更されません。g2 - レイアウトの描画先の Graphics2D コンテキストx, y - この TextLayout の原点の座標getBounds()public Shape getOutline(AffineTransform tx)
TextLayout の輪郭を表す Shape を返します。tx - この TextLayout の輪郭に適用する任意指定の AffineTransformTextLayout の輪郭である Shape
|
Java プラットフォーム 1.2 |
|||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | |||||||||
| 概要: 内部クラス | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | |||||||||