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ã¯æšæºã®åº§æšã䜿çšããŸãã
LineBreakMeasurer, TextAttribute, TextHitInfo, LayoutPath| 修食åãšå | ã¯ã©ã¹ | 説æ |
|---|---|---|
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ãåç
§ããŠãã ããã