public final class TextLayout extends Object implements Cloneable
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, (float)loc.getX(), (float)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.
ノート: フォントを回転するとテキストのベースラインが回転することがあり、複数のランで回転が異なると、ベースラインが屈曲したりジグザグになることがあります。 このまれな可能性に対処するために、一部のフォントAPIは指定に従って「ベースラインを基準にした座標で」メトリックスを返したりパラメータを受け取ったりします(アセントや有効幅など)。それ以外のAPIは、「標準の座標で」処理します(getBoundsなど)。 ベースラインを基準にした座標では、x座標はベースラインに沿った距離(正のxはベースラインに沿って進む方向)、y座標はxでのベースラインに対する垂線に沿った距離(正のyはベースライン・ベクトルから時計回りに90度の方向)にマップされます。 標準の座標では、座標はTextLayoutの原点を0,0として、x軸およびy軸に沿って測定されます。 関連する各APIのドキュメントには、どの値がどの座標系で表されるかが示されています。 一般に、測定に関連するAPIはベースラインを基準にした座標、表示に関連するAPIは標準の座標を使用します。
| 修飾子と型 | クラス | 説明 |
|---|---|---|
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<? extends AttributedCharacterIterator.Attribute,?> 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のコピーを作成します。 |
LayoutPath |
getLayoutPath() |
LayoutPathを返します。レイアウト・パスがデフォルトのパスである場合は(xが有効幅、yがオフセットにマップされます)、nullを返します。
|
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) |
左(上)方向の次のキャレットのヒットを返します。この方向にヒットがない場合は
nullを返します。 |
TextHitInfo |
getNextLeftHit(int offset, TextLayout.CaretPolicy policy) |
左(上)方向の次のキャレットのヒットを返します。この方向にヒットがない場合は
nullを返します。 |
TextHitInfo |
getNextLeftHit(TextHitInfo hit) |
左(上)方向の次のキャレットのヒットを返します。この方向にヒットがない場合は
nullを返します。 |
TextHitInfo |
getNextRightHit(int offset) |
右(下)方向の次のキャレットのヒットを返します。この方向にヒットがない場合は
nullを返します。 |
TextHitInfo |
getNextRightHit(int offset, TextLayout.CaretPolicy policy) |
右(下)方向の次のキャレットのヒットを返します。この方向にヒットがない場合は
nullを返します。 |
TextHitInfo |
getNextRightHit(TextHitInfo hit) |
右(下)方向の次のキャレットのヒットを返します。この方向にヒットがない場合は
nullを返します。 |
Shape |
getOutline(AffineTransform tx) |
この
TextLayoutの輪郭を表すShapeを返します。 |
Rectangle |
getPixelBounds(FontRenderContext frc, float x, float y) |
指定された位置にある指定された
FontRenderContextを使用してグラフィックス内にレンダリングされるときの、このTextLayoutのピクセル境界を返します。 |
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を返します。 |
void |
hitToPoint(TextHitInfo hit, Point2D point) |
ヒットを標準座標のポイントに変換します。
|
boolean |
isLeftToRight() |
この
TextLayoutのベースとなる方向が左から右の場合にtrueを返し、右から左の場合にfalseを返します。 |
boolean |
isVertical() |
この
TextLayoutが垂直の場合にtrueを返します。 |
String |
toString() |
この
TextLayoutのデバッグ情報を返します。 |
public static final TextLayout.CaretPolicy DEFAULT_CARET_POLICY
CaretPolicyは、ポリシーがクライアントによって指定されていない場合に使用されます。 このポリシーでは、方向が行の方向と同じ文字のヒットが、反対方向の文字のヒットより強くなります。 文字の方向が同じ場合、文字のリーディング・エッジのヒットの方が、文字のトレーリング・エッジのヒットより強くなります。 public TextLayout(String string, Font font, FontRenderContext frc)
StringおよびFontからTextLayoutを構築します。 すべてのテキストは、指定されたFontを使用して書式が設定されます。
Stringには、1段落のテキストを指定する必要があります。双方向アルゴリズムでは、段落全体が要求されるからです。
string - 表示するテキストfont - テキストの書式を設定するために使用されるFontfrc - テキストを正確に測定するために必要なグラフィックス・デバイスに関する情報を格納する。 テキスト測定は、デバイスの解像度によりわずかに異なることがあり、アンチエイリアスなどの属性によっても異なることがある。 このパラメータは、TextLayoutとユーザー空間の間の変換は指定しない。 public TextLayout(String string, Map<? extends AttributedCharacterIterator.Attribute,?> attributes, FontRenderContext frc)
Stringおよび属性セットからTextLayoutを構築します。
すべてのテキストは、指定された属性により書式が設定されます。
stringには、1段落のテキストを指定する必要があります。双方向アルゴリズムでは、段落全体が要求されるからです。
string - 表示するテキストattributes - テキストの書式を設定するために使用される属性frc - テキストを正確に測定するために必要なグラフィックス・デバイスに関する情報を格納する。 テキスト測定は、デバイスの解像度によりわずかに異なることがあり、アンチエイリアスなどの属性によっても異なることがある。 このパラメータは、TextLayoutとユーザー空間の間の変換は指定しない。 public TextLayout(AttributedCharacterIterator text, FontRenderContext frc)
TextLayoutを構築します。
イテレータは、1段落のテキストを指定する必要があります。双方向アルゴリズムでは、段落全体が要求されるからです。
text - 表示する書式付きテキストfrc - テキストを正確に測定するために必要なグラフィックス・デバイスに関する情報を格納する。 テキスト測定は、デバイスの解像度によりわずかに異なることがあり、アンチエイリアスなどの属性によっても異なることがある。 このパラメータは、TextLayoutとユーザー空間の間の変換は指定しない。 protected Object clone()
TextLayoutのコピーを作成します。public TextLayout getJustifiedLayout(float justificationWidth)
TextLayoutのコピーを作成します。
このTextLayoutがすでに行揃えされている場合は例外がスローされます。 このTextLayoutオブジェクトの行揃え比率がゼロの場合、このTextLayoutと同一のTextLayoutが返されます。
justificationWidth - 行揃えするために使用する幅。 最良の結果を得るためには、行の現在の有効幅との違いは小さい方がよい。 TextLayout。Error - このレイアウトがすでに行揃えされている場合、Errorがスローされる。protected 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内のすべてのテキストのベースラインからの最大アセントです。 ベースラインを基準にした座標で表されます。 TextLayoutのアセント。public float getDescent()
TextLayoutのディセントを返します。 ディセントは、ベースラインから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 Rectangle getPixelBounds(FontRenderContext frc, float x, float y)
FontRenderContextを使用してグラフィックス内にレンダリングされるときの、このTextLayoutのピクセル境界を返します。 グラフィックス描画コンテキストは、このTextLayoutの作成に使用されるFontRenderContextと同じである必要はなく、nullでもかまいません。 nullの場合は、このTextLayoutのFontRenderContextが使われます。 frc - GraphicsのFontRenderContext。x - このTextLayoutを描画するX座標。y - このTextLayoutを描画するY座標。Rectangle。GlyphVector.getPixelBounds(java.awt.font.FontRenderContext, float, float)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), Font.getItalicAngle()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 - 指定された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の中にあるオフセット: 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より小さくても可。 Shape。 これは標準の座標で表される。 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のハッシュ・コードを返します。hashCode、クラスObjectTextLayoutのハッシュ・コード。Object.equals(java.lang.Object), System.identityHashCode(java.lang.Object)public boolean equals(Object obj)
ObjectがTextLayoutオブジェクトで、指定されたObjectがこのTextLayoutと等しい場合にtrueを返します。equals、クラスObjectobj - 等しいかどうかが判定されるObjectTextLayoutがこのObjectの場合はtrue、それ以外の場合はfalse。Object.hashCode()、HashMappublic boolean equals(TextLayout rhs)
trueを返します。 2つのレイアウトは、それらが同じ順序で同じグリフ・ベクトルを格納している場合に等しくなります。 rhs - このTextLayoutと比較するTextLayoutTextLayoutがこのTextLayoutと等しい場合はtrue。public String toString()
TextLayoutのデバッグ情報を返します。public void draw(Graphics2D g2, float x, float y)
Graphics2Dコンテキストの指定された位置にこのTextLayoutを描画します。 レイアウトの原点はx, yです。 描画は、この位置のgetBounds()内の任意の点に接します。 g2は変更されません。 テキストはベースラインのパスに沿って描画されます。 g2 - レイアウトの描画先のGraphics2Dコンテキストx - このTextLayoutの原点のX座標y - このTextLayoutの原点のY座標getBounds()public Shape getOutline(AffineTransform tx)
TextLayoutの輪郭を表すShapeを返します。tx - このTextLayoutの輪郭に適用するオプションのAffineTransform。TextLayoutの輪郭であるShape。 これは標準の座標で表される。 public LayoutPath getLayoutPath()
public void hitToPoint(TextHitInfo hit, Point2D point)
hit - チェック対象のヒット。 これはTextLayout上の有効なヒットでなければならない。 point - 返されるポイント。 ポイントは標準の座標で表される。 IllegalArgumentException - ヒットがTextLayoutに対して有効でない場合。NullPointerException - hitまたはpointがnullの場合。 バグまたは機能を送信
詳細なAPIリファレンスおよび開発者ドキュメントについては、Java SEのドキュメントを参照してください。 そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2025, Oracle and/or its affiliates. All rights reserved. Use is subject to license terms. Documentation Redistribution Policyも参照してください。