|
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
- テキストの書式を設定するために使用される Font
frc
- テキストの寸法を正確に測定するために必要な情報を格納する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
- 行を行揃えするときに使用する幅。最良の結果を得るためには、行の現在の有効幅と違いは小さい方がよいTextLayout
protected void handleJustify(float justificationWidth)
コードによっては、レイアウトの不変性に依存する場合があります。サブクラサはこのメソッドを直接呼び出すのではなく、getJustifiedLayout を呼び出した方がよいでしょう。getJustifiedLayout は、このレイアウトの複製に対してこのメソッドを呼び出すので、元のレイアウトは保存されます。
justificationWidth
- 行を行揃えするために使用する幅。最良の結果を得るためには、行の現在の有効幅との違いは小さい方がよいgetJustifiedLayout(float)
public byte getBaseline()
TextLayout
のベースラインを返します。ベースラインは、Font
で定義される値 (roman、centered、hanging) の 1 つです。アセントおよびディセントは、このベースラインを基準にします。baselineOffsets
もこのベースラインを基準にします。TextLayout
のベースラインgetBaselineOffsets()
,
Font
public float[] getBaselineOffsets()
TextLayout
で使用されるベースラインのオフセット配列を返します。
この配列は、Font
で定義される値 (roman、centered、hanging) の 1 つでインデックス付けされます。これらの値は、この TextLayout
オブジェクトのベースラインを基準にします。そのため、getBaselineOffsets[getBaseline()] == 0
となります。オフセットを TextLayout
オブジェクトのベースラインの位置に加算すると、新しいベースラインの位置を取得できます。
TextLayout
に使用されるベースラインを格納するオフセット配列getBaseline()
,
Font
public 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
の境界である Rectangle2D
public boolean isLeftToRight()
TextLayout
のベースとなる方向が左から右の場合に true
を返し、右から左の場合に false
を返します。TextLayout
には、左から右 (LTR) または右から左 (RTL) のどちらかのベースとなる方向があります。ベースとなる方向は、行のテキストの実際の方向 (LTR、RTL、または混合) には依存しません。左から右のレイアウトは、デフォルトでは左端揃えになります。レイアウトがタブ付きの行に置かれた場合、タブは左から右になるので、論理的に連続するレイアウトは左から右に配置されます。RTL レイアウトの場合はこの反対です。この場合、デフォルトでは右端揃え、タブは右から左になります。TextLayout
のベースとなる方向が左から右の場合は true
、そうでない場合は false
public boolean isVertical()
TextLayout
が垂直の場合に true
を返します。TextLayout
が垂直の場合は true
、そうでない場合は false
public 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
- 強いキャレットを選択するために使用されるポリシーnull
public TextHitInfo getNextRightHit(int offset)
null
が返されます。ヒットは、デフォルトのポリシーによる、指定されたオフセット位置の強いキャレットの右にあります。返されるヒットは、デフォルトのポリシーによる、 2 つのヒットの強い方です。offset
- この TextLayout
の挿入オフセット。0 より小さい値や TextLayout
オブジェクトの文字カウントより大きい値は不可null
public TextHitInfo getNextLeftHit(TextHitInfo hit)
null
が返されます。ヒット文字のインデックスが境界内にない場合は、IllegalArgumentException
がスローされます。hit
- この TextLayout
の文字のヒットnull
public TextHitInfo getNextLeftHit(int offset, TextLayout.CaretPolicy policy)
null
が返されます。ヒットは、指定されたポリシーによる、指定されたオフセット位置の強いキャレットの左にあります。返されるヒットは、指定されたポリシーによる、2 つのヒットの強い方です。offset
- この TextLayout
の挿入オフセット。0 より小さい値や TextLayout
オブジェクトの文字カウントより大きい値は不可policy
- 強いキャレットを選択するために使用されるポリシーnull
public TextHitInfo getNextLeftHit(int offset)
null
が返されます。ヒットは、デフォルトのポリシーによる、指定されたオフセット位置の強いキャレットの左です。返されるヒットは、デフォルトのポリシーによる、2 つのヒットの強い方です。offset
- この TextLayout
の挿入オフセット。0 より小さい値や TextLayout
オブジェクトの文字カウントより大きな値は不可null
public TextHitInfo getVisualOtherHit(TextHitInfo hit)
hit
- 指定されたヒットpublic Shape getCaretShape(TextHitInfo hit, Rectangle2D bounds)
Shape
を返します。hit
- キャレットを生成するヒットbounds
- キャレットの生成で使用する TextLayout
の境界Shape
public Shape getCaretShape(TextHitInfo hit)
TextLayout
の自然境界内の指定されたヒットにあるキャレットを表す Shape
を返します。hit
- キャレットを生成するヒットShape
public byte getCharacterLevel(int index)
index
にある文字のレベルを返します。インデックス -1 および characterCount
には、この TextLayout
の基底レベルが割り当てられます。index
- レベルを取得する文字のインデックスpublic Shape[] getCaretShapes(int offset, Rectangle2D bounds, TextLayout.CaretPolicy policy)
offset
- この TextLayout
に対するオフセットbounds
- キャレットが拡張される境界policy
- 指定された CaretPolicy
null
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
- 選択範囲が拡張される境界の矩形Shape
getLogicalRangesForVisualSelection(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
- 等しいかどうかが判定テストされる Object
Object
がこの TextLayout
と等しい場合は true
、そうでない場合は false
public boolean equals(TextLayout rhs)
true
を返します。2 つのレイアウトは、それらが同じ順序で同じグリフベクトルを格納している場合に等しくなります。rhs
- この TextLayout
と比較する TextLayout
TextLayout
がこの TextLayout
と等しい場合は true
public 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
の輪郭に適用する任意指定の AffineTransform
TextLayout
の輪郭である Shape
|
Java プラットフォーム 1.2 |
|||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 内部クラス | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |