- java.lang.Object
-  
      - java.awt.font.TextLayout
 
-  
       - 实现的所有接口
-  
         Cloneable
 
 public final class TextLayout extends Object implements Cloneable TextLayout是样式化字符数据的不可变图形表示。它提供以下功能: - 隐式双向分析和重新排序,
- 光标定位和移动,包括用于混合方向文本的分割光标,
- 突出显示,包括混合方向文本的逻辑和视觉突出显示,
- 多个基线(罗马,悬挂和居中),
- 打击测试,
- 理由,
- 默认字体替换,
- 度量信息,如上升,下降和前进,以及
- 翻译
 可以使用其 draw方法呈现TextLayout对象。TextLayout可以直接构建,也可以使用LineBreakMeasurer构建 。 直接构造时,源文本代表单个段落。LineBreakMeasurer允许将样式化文本拆分为适合特定宽度的行。 有关更多信息,请参见LineBreakMeasurer文档。TextLayout建设逻辑上如下:- 段落属性被提取和检查,
- 分析文本以进行双向重新排序,并在需要时计算重新排序信息,
- 文本被分段为样式运行
-  为样式运行选择字体,如果存在属性TextAttribute.FONT则首先使用字体,否则通过使用已定义的属性计算默认字体
- 如果文本在多个基线上,则运行或子运行进一步分解为共享共同基线的子运行,
- 使用所选字体为每次运行生成glyphvectors,
- 对glyphvectors执行最终双向重新排序
 从 TextLayout对象的方法返回的所有图形信息都是相对于TextLayout的原点,它是TextLayout对象的基线与其左边缘的交点。 此外,传递到TextLayout对象的方法的坐标被假定为相对于TextLayout对象的原点。 客户端通常需要在TextLayout对象的坐标系和另一个对象(例如Graphics对象)中的坐标系之间进行转换。TextLayout对象是从样式文本构造的,但它们不保留对其源文本的引用。 因此,先前用于生成TextLayout的文本中的更改不会影响TextLayout。一对三种方法 TextLayout对象(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 translated 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度)。 标准坐标中的值沿x轴和y轴测量,TextLayout原点为0,0。 每个相关API的文档都指出了什么值在哪个坐标系中。 通常,与测量相关的API在基线相对坐标中,而与显示相关的API在标准坐标中。 - 另请参见:
-  
         LineBreakMeasurer,TextAttribute,TextHitInfo,LayoutPath
 
-  
        
       -  
             嵌套类汇总嵌套类 变量和类型 类 描述 static classTextLayout.CaretPolicy定义用于确定强插入位置的策略。
 -  
             字段汇总字段 变量和类型 字段 描述 static TextLayout.CaretPolicyDEFAULT_CARET_POLICY当客户端未指定策略时,将使用此CaretPolicy。
 -  
             构造方法摘要构造方法 构造器 描述 TextLayout(String string, Font font, FontRenderContext frc)构造TextLayout来自String和Font。TextLayout(String string, Map<? extends AttributedCharacterIterator.Attribute,?> attributes, FontRenderContext frc)构造一个TextLayout从String,并设置一个属性。TextLayout(AttributedCharacterIterator text, FontRenderContext frc)从样式文本的迭代器构造一个TextLayout。
 -  
             方法摘要所有方法 实例方法 具体的方法 变量和类型 方法 描述 protected Objectclone()创建此TextLayout的副本。voiddraw(Graphics2D g2, float x, float y)在指定的Graphics2D上下文中的指定位置呈现此TextLayout。booleanequals(TextLayout rhs)如果两个布局相等,则返回true。floatgetAdvance()返回此TextLayout。floatgetAscent()返回此TextLayout的上升。bytegetBaseline()返回此TextLayout的基线。float[]getBaselineOffsets()返回用于此TextLayout的基线的偏移量数组。ShapegetBlackBoxBounds(int firstEndpoint, int secondEndpoint)返回指定范围内字符的黑框边界。Rectangle2DgetBounds()返回此TextLayout的边界。float[]getCaretInfo(TextHitInfo hit)返回有关与hit对应的插入符的信息。float[]getCaretInfo(TextHitInfo hit, Rectangle2D bounds)返回有关与hit对应的插入符的信息。ShapegetCaretShape(TextHitInfo hit)返回Shape表示此TextLayout的自然边界内指定命中的插入符号。ShapegetCaretShape(TextHitInfo hit, Rectangle2D bounds)Shape[]getCaretShapes(int offset)返回与强插入符号和弱插入符号对应的两个路径。Shape[]getCaretShapes(int offset, Rectangle2D bounds)返回与强插入符号和弱插入符号对应的两个路径。Shape[]getCaretShapes(int offset, Rectangle2D bounds, TextLayout.CaretPolicy policy)返回与强插入符号和弱插入符号对应的两个路径。intgetCharacterCount()返回此TextLayout表示的字符数。bytegetCharacterLevel(int index)返回字符的级别index。floatgetDescent()返回此TextLayout的下降。TextLayoutgetJustifiedLayout(float justificationWidth)创建一个以指定宽度对齐的TextLayout的副本。LayoutPathgetLayoutPath()返回LayoutPath,如果布局路径是默认路径,则返回null(x映射到advance,y映射到offset)。floatgetLeading()返回TextLayout。ShapegetLogicalHighlightShape(int firstEndpoint, int secondEndpoint)返回包含指定范围内逻辑选择的Shape,扩展到此TextLayout的自然边界。ShapegetLogicalHighlightShape(int firstEndpoint, int secondEndpoint, Rectangle2D bounds)返回包含指定范围内逻辑选择的Shape,扩展为指定的bounds。int[]getLogicalRangesForVisualSelection(TextHitInfo firstEndpoint, TextHitInfo secondEndpoint)返回与可视选择对应的文本的逻辑范围。TextHitInfogetNextLeftHit(int offset)返回下一个插入符号左侧的顶部(顶部); 如果没有这样的命中,则返回null。TextHitInfogetNextLeftHit(int offset, TextLayout.CaretPolicy policy)返回下一个插入符号左侧的顶部(顶部); 如果没有这样的命中,返回null。TextHitInfogetNextLeftHit(TextHitInfo hit)返回下一个插入符号左侧的顶部(顶部); 如果没有这样的命中,返回null。TextHitInfogetNextRightHit(int offset)返回下一个插入符右侧(底部)的命中; 如果没有这样的命中,则返回null。TextHitInfogetNextRightHit(int offset, TextLayout.CaretPolicy policy)返回下一个插入符右侧(底部)的命中; 如果没有这样的命中,则返回null。TextHitInfogetNextRightHit(TextHitInfo hit)返回下一个插入符右侧(底部)的命中; 如果没有这样的命中,则返回null。ShapegetOutline(AffineTransform tx)返回Shape表示此TextLayout的大纲。RectanglegetPixelBounds(FontRenderContext frc, float x, float y)在给定位置给定FontRenderContext的图形中渲染时,返回此TextLayout的像素范围。floatgetVisibleAdvance()返回此TextLayout的前进,减去尾随空格。ShapegetVisualHighlightShape(TextHitInfo firstEndpoint, TextHitInfo secondEndpoint)返回包含指定范围内的可视选择的Shape,扩展到边界。ShapegetVisualHighlightShape(TextHitInfo firstEndpoint, TextHitInfo secondEndpoint, Rectangle2D bounds)返回包含指定范围内的可视选择的路径,扩展为bounds。TextHitInfogetVisualOtherHit(TextHitInfo hit)返回指定匹配的插入符号另一侧的匹配。protected voidhandleJustify(float justificationWidth)证明这种布局。TextHitInfohitTestChar(float x, float y)返回与指定点对应的TextHitInfo。TextHitInfohitTestChar(float x, float y, Rectangle2D bounds)返回与指定点对应的TextHitInfo。voidhitToPoint(TextHitInfo hit, Point2D point)将命中转换为标准坐标中的点。booleanisLeftToRight()如果此TextLayout具有从左到右的基本方向,则false如果它具有从右到左的基本方向,则返回true。booleanisVertical()如果此TextLayout是垂直的,则返回true。StringtoString()返回此TextLayout调试信息。
 
-  
             
-  
        
       -  
             字段详细信息-  DEFAULT_CARET_POLICYpublic static final TextLayout.CaretPolicy DEFAULT_CARET_POLICY 当客户端未指定策略时,将使用此CaretPolicy。 使用此策略时,对方向与行方向相同的字符的命中比对方向字符的命中要强。 如果角色的方向相同,则角色前缘的击打强于角色后缘的击打。
 
-  
 -  
             构造方法详细信息-  TextLayoutpublic TextLayout(String string, Font font, FontRenderContext frc) - 参数
-  
              string- 要显示的文本
-  
              font- 用于设置文本样式的Font
-  
              frc- 包含有关正确测量文本所需的图形设备的信息。 文本测量值可能会略有不同,具体取决于设备分辨率和抗锯齿等属性。 此参数未指定TextLayout与用户空间之间的TextLayout。
 
 -  TextLayoutpublic TextLayout(String string, Map<? extends AttributedCharacterIterator.Attribute,?> attributes, FontRenderContext frc) 从String构造一个TextLayout和一个属性集。所有文本都使用提供的属性设置样式。 string必须指定单个文本段落,因为双向算法需要整个段落。- 参数
-  
              string- 要显示的文本
-  
              attributes- 用于设置文本样式的属性
-  
              frc- 包含有关正确测量文本所需的图形设备的信息。 文本测量值可能会略有不同,具体取决于设备分辨率和抗锯齿等属性。 此参数未指定TextLayout与用户空间之间的TextLayout。
 
 -  TextLayoutpublic TextLayout(AttributedCharacterIterator text, FontRenderContext frc) 从样式文本的迭代器构造一个TextLayout。迭代器必须指定单个文本段落,因为双向算法需要整个段落。 - 参数
-  
              text- 要显示的样式文本
-  
              frc- 包含有关正确测量文本所需的图形设备的信息。 文本测量值可能会略有不同,具体取决于设备分辨率和抗锯齿等属性。 此参数未指定TextLayout与用户空间之间的TextLayout。
 
 
-  
 -  
             方法详细信息-  getJustifiedLayoutpublic TextLayout getJustifiedLayout(float justificationWidth) 创建一个以指定宽度对齐的TextLayout的副本。如果此 TextLayout已被证明是合理的,则抛出异常。 如果此TextLayout对象的调整率为零,一个TextLayout相同此TextLayout被返回。- 参数
-  
              justificationWidth-justificationWidth使用的宽度。 为了获得最佳效果,它与当前的生产线进展不应太大。
- 结果
- 
               a 
              TextLayout对齐指定的宽度。
- 异常
-  
              Error- 如果此布局已经合理,则抛出错误。
 
 -  handleJustifyprotected void handleJustify(float justificationWidth) 证明这种布局。 被子类重写以控制对齐(如果有子类,那就是......)布局只有在段落属性(来自源文本,可能由布局属性默认)指示非零对齐率时才会合理。 文本将符合指定的宽度。 当前的实现还调整悬挂标点符号和尾随空格以突出对齐宽度。 一旦合理,布局可能不会被重新证明。一些代码可能依赖于布局的不变性。 子类不应该直接调用它,而应该调用getJustifiedLayout,它将在此布局的克隆上调用此方法,保留原始格式。 - 参数
-  
              justificationWidth-justificationWidth使用的宽度。 为了获得最佳效果,它与当前的生产线进展不应太大。
- 另请参见:
-  
              getJustifiedLayout(float)
 
 -  getBaselinepublic byte getBaseline() 返回此TextLayout的基线。 基线是Font定义的值之一,它们是罗马,居中和悬挂。 上升和下降与此基线有关。baselineOffsets也与此基线相关。- 结果
- 
               这个 
              TextLayout的基准。
- 另请参见:
-  
              getBaselineOffsets(),Font
 
 -  getBaselineOffsetspublic float[] getBaselineOffsets() 返回用于此TextLayout的基线的偏移量数组。该数组由 Font定义的值之一索引,这些值是罗马,居中和悬挂。 这些值是相对于此TextLayout对象的基线,因此为getBaselineOffsets[getBaseline()] == 0。 偏移量将添加到TextLayout对象基线的位置,以获取新基线的位置。- 结果
- 
               包含用于此 
              TextLayout的基线的偏移数组。
- 另请参见:
-  
              getBaseline(),Font
 
 -  getAdvancepublic float getAdvance() 返回此TextLayout。 前进是从最右边(最下面)字符的原点到前进的距离。 这是基线相对坐标。- 结果
- 
               这个 
              TextLayout。
 
 -  getVisibleAdvancepublic float getVisibleAdvance() 返回此TextLayout的前进,减去尾随空格。 这是基线相对坐标。- 结果
- 
               这个 
              TextLayout的前进没有尾随空格。
- 另请参见:
-  
              getAdvance()
 
 -  getAscentpublic float getAscent() 返回此TextLayout的上升。 上升是从TextLayout的顶部(右侧)到基线的距离。 它总是正面或零。 上升足以容纳上标文本,并且是每个字形的上升,偏移和基线之和的最大值。 上升是TextLayout中所有文本的基线的最大上升。 它位于基线相对坐标中。- 结果
- 
               这个 
              TextLayout的上升。
 
 -  getDescentpublic float getDescent() 返回此TextLayout的下降。 下降是从基线到TextLayout的底部(左侧)的TextLayout。 它总是正面或零。 下降足以容纳下标文本,并且是每个字形的下降,偏移和基线之和的最大值。 这是TextLayout中所有文本的基线的最大下降。 它位于基线相对坐标中。- 结果
- 
               这个 
              TextLayout的血统。
 
 -  getLeadingpublic float getLeading() 返回TextLayout。 前导是建议的TextLayout间距。 这是基线相对坐标。前导是根据TextLayout中所有glyphvector的前导,下降和基线 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的领先者。
 
 -  getBoundspublic Rectangle2D getBounds() 返回此TextLayout的边界。 边界是标准坐标。由于光栅化效果,此边界可能不会包含TextLayout渲染的所有像素。 它可能与TextLayout的上升,下降,起源或前进完全一致。- 结果
-  
              一个Rectangle2D,它是此的边界TextLayout。
 
 -  getPixelBoundspublic Rectangle getPixelBounds(FontRenderContext frc, float x, float y) 在给定位置给定FontRenderContext的图形中渲染时,返回此TextLayout的像素范围。 图形渲染方面不一定是一样的FontRenderContext用于创建此TextLayout,并且可以为null。 如果为空,则FontRenderContext如此TextLayout使用。- 参数
-  
              frc-FontRenderContext的Graphics。
-  
              x- 呈现此TextLayout的x坐标。
-  
              y- 呈现此TextLayout的y坐标。
- 结果
- 
               a 
              Rectangle限制将受影响的像素。
- 从以下版本开始:
- 1.6
- 另请参见:
-  
              GlyphVector.getPixelBounds(java.awt.font.FontRenderContext, float, float)
 
 -  isLeftToRightpublic boolean isLeftToRight() 如果此TextLayout具有从左到右的基本方向,则false如果它具有从右到左的基本方向,则返回true。TextLayout具有从左到右(LTR)或从右到左(RTL)的基本方向。 基本方向与行上文本的实际方向无关,可以是LTR,RTL或混合。 默认情况下,从左到右的布局应该向左齐平。 如果布局位于选项卡行上,则选项卡从左向右运行,因此逻辑上连续的布局从左向右排列。 RTL布局的情况恰恰相反。 默认情况下,它们应该向左平齐,并且标签从右向左运行。- 结果
-  
              true如果此的基础方向TextLayout是左到右; 否则为false。
 
 -  isVerticalpublic boolean isVertical() 如果此TextLayout是垂直的,则返回true。- 结果
-  
              true若TextLayout是TextLayout的; 否则为false。
 
 -  getCharacterCountpublic int getCharacterCount() 返回此TextLayout表示的字符数。- 结果
- 
               这个 
              TextLayout的字符数。
 
 -  getCaretInfopublic float[] getCaretInfo(TextHitInfo hit, Rectangle2D bounds) 返回有关与hit对应的插入符的信息。 数组的第一个元素是插入符号与基线的交点,作为沿基线的距离。 阵列的第二个元素是插入符号的反向斜率(运行/上升),相对于该点的基线测量。此方法仅供参考。 要显示 getCaretShapes,最好使用getCaretShapes。- 参数
-  
              hit- 此TextLayout一个角色TextLayout
-  
              bounds- 构造插入符号信息的范围。 边界在基线相对坐标中。
- 结果
- 包含插入符号位置和斜率的双元素数组。 返回的插入符号信息位于基线相对坐标中。
- 另请参见:
-  
              getCaretShapes(int, Rectangle2D, TextLayout.CaretPolicy),Font.getItalicAngle()
 
 -  getCaretInfopublic float[] getCaretInfo(TextHitInfo hit) 返回有关与hit对应的插入符的信息。 此方法是getCaretInfo的便捷重载,并使用此TextLayout的自然边界。- 参数
-  
              hit- 此TextLayout一个角色TextLayout
- 结果
- 有关与命中对应的插入符号的信息。 返回的插入符号信息位于基线相对坐标中。
 
 -  getNextRightHitpublic TextHitInfo getNextRightHit(TextHitInfo hit) - 参数
-  
              hit- 此布局中的角色命中
- 结果
- 
               击中出现在所提供击中的插入符右侧(底部)的下一个位置或 
              null。
 
 -  getNextRightHitpublic TextHitInfo getNextRightHit(int offset, TextLayout.CaretPolicy policy) 返回下一个插入符右侧(底部)的命中; 如果没有这样的命中,则返回null。 命中位于指定偏移处的强插入符的右侧,由指定的策略确定。 返回的命中是两个可能的命中中较强的一个,由指定的策略决定。- 参数
-  
              offset- 此TextLayout的插入偏移量。 不能小于0或大于此TextLayout对象的字符数。
-  
              policy- 用于选择强插入符号的策略
- 结果
- 
               击中出现在所提供击中的插入符右侧(下方)的下一个位置的击打,或 
              null。
 
 -  getNextRightHitpublic TextHitInfo getNextRightHit(int offset) 返回下一个插入符右侧(底部)的命中; 如果没有这样的命中,则返回null。 命中位于指定偏移处的强插入符右侧,由默认策略确定。 返回的命中是两个可能的命中中较强的一个,由默认策略确定。- 参数
-  
              offset- 此TextLayout的插入偏移量。 不能小于0或大于TextLayout对象的字符数。
- 结果
- 
               击中出现在所提供击中的插入符右侧(下方)的下一个位置的击打,或 
              null。
 
 -  getNextLeftHitpublic TextHitInfo getNextLeftHit(TextHitInfo hit) 返回下一个插入符号左侧的顶部(顶部); 如果没有这样的命中,则返回null。 如果命中字符索引超出范围,则抛出IllegalArgumentException。- 参数
-  
              hit- 此TextLayout一个角色TextLayout。
- 结果
- 
               击打出现在所提供击中的插入符号左侧(顶部)的下一个位置的击打,或 
              null。
 
 -  getNextLeftHitpublic TextHitInfo getNextLeftHit(int offset, TextLayout.CaretPolicy policy) 返回下一个插入符号左侧的顶部(顶部); 如果没有这样的命中,则返回null。 命中位于指定偏移处的强插入符的左侧,由指定的策略确定。 返回的命中是两个可能的命中中较强的一个,由指定的策略决定。- 参数
-  
              offset- 此TextLayout的插入偏移量。 不能小于0或大于此TextLayout对象的字符数。
-  
              policy- 用于选择强插入符号的策略
- 结果
- 
               击打出现在所提供击中的插入符号左侧(顶部)的下一个位置的击打,或 
              null。
 
 -  getNextLeftHitpublic TextHitInfo getNextLeftHit(int offset) 返回下一个插入符号左侧的顶部(顶部); 如果没有这样的命中,返回null。 命中位于指定偏移处的强插入符的左侧,由默认策略确定。 返回的命中是两个可能的命中中较强的一个,由默认策略确定。- 参数
-  
              offset- 此TextLayout的插入偏移量。 不能小于0或大于此TextLayout对象的字符数。
- 结果
- 
               击中出现在所提供击中的插入符号左侧(顶部)的下一个位置的击打,或 
              null。
 
 -  getVisualOtherHitpublic TextHitInfo getVisualOtherHit(TextHitInfo hit) 返回指定匹配的插入符号另一侧的匹配。- 参数
-  
              hit- 指定的匹配
- 结果
- 击中指定命中的插入符号的另一侧。
 
 -  getCaretShapepublic Shape getCaretShape(TextHitInfo hit, Rectangle2D bounds) - 参数
-  
              hit- 生成插入符的命中
-  
              bounds- 用于生成插入符的TextLayout的边界。 边界在基线相对坐标中。
- 结果
-  
              代表插入符号的Shape。 返回的形状是标准坐标。
 
 -  getCaretShapepublic Shape getCaretShape(TextHitInfo hit) 返回Shape代表在指定的打这个的自然边界中插入符号TextLayout。- 参数
-  
              hit- 生成插入符的命中
- 结果
-  
              代表插入符号的Shape。 返回的形状是标准坐标。
 
 -  getCharacterLevelpublic byte getCharacterLevel(int index) 返回字符级别index。 指数-1和characterCount被分配了该TextLayout的基本级别。- 参数
-  
              index- 从中获取关卡的角色的索引
- 结果
- 指定索引处的字符级别。
 
 -  getCaretShapespublic Shape[] getCaretShapes(int offset, Rectangle2D bounds, TextLayout.CaretPolicy policy) 返回与强插入符号和弱插入符号对应的两个路径。- 参数
-  
              offset- 此TextLayout的偏移量
-  
              bounds- 扩展bounds的范围。 边界在基线相对坐标中。
-  
              policy- 指定的CaretPolicy
- 结果
-  
              两个路径的数组。 
              元素零是强大的插入符号。 
              如果有两个插入符号,则元素一是弱插入符号,否则为null。 返回的形状采用标准坐标。
 
 -  getCaretShapespublic Shape[] getCaretShapes(int offset, Rectangle2D bounds) 返回与强插入符号和弱插入符号对应的两个路径。 此方法是使用默认插入符策略的getCaretShapes的便捷重载。- 参数
-  
              offset- 此TextLayout的偏移量
-  
              bounds- 扩展bounds的范围。 这是基线相对坐标。
- 结果
-  
              两条路径对应于DEFAULT_CARET_POLICY定义的强和弱插入符号。 这些是标准坐标。
 
 -  getCaretShapespublic Shape[] getCaretShapes(int offset) 返回与强插入符号和弱插入符号对应的两个路径。 此方法是getCaretShapes的便捷重载,它使用默认插入符号策略和此TextLayout对象的自然边界。- 参数
-  
              offset- 此TextLayout的偏移量
- 结果
-  
              两条路径对应于DEFAULT_CARET_POLICY定义的强DEFAULT_CARET_POLICY和弱DEFAULT_CARET_POLICY。 这些是标准坐标。
 
 -  getLogicalRangesForVisualSelectionpublic int[] getLogicalRangesForVisualSelection(TextHitInfo firstEndpoint, TextHitInfo secondEndpoint) 返回与可视选择对应的文本的逻辑范围。- 参数
-  
              firstEndpoint- 可视范围的端点
-  
              secondEndpoint- 可视范围的另一个端点。 此端点可能小于firstEndpoint。
- 结果
- 表示所选范围的起始/限制对的整数数组。
- 另请参见:
-  
              getVisualHighlightShape(TextHitInfo, TextHitInfo, Rectangle2D)
 
 -  getVisualHighlightShapepublic 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)
 
 -  getVisualHighlightShapepublic Shape getVisualHighlightShape(TextHitInfo firstEndpoint, TextHitInfo secondEndpoint) 返回包含指定范围内的可视选择的Shape,扩展到边界。 此方法是getVisualHighlightShape的便利重载,它使用此TextLayout的自然边界。- 参数
-  
              firstEndpoint- 视觉选择的一端
-  
              secondEndpoint- 视觉选择的另一端
- 结果
-  
              一个Shape包含选择。 这是标准坐标。
 
 -  getLogicalHighlightShapepublic Shape getLogicalHighlightShape(int firstEndpoint, int secondEndpoint, Rectangle2D bounds) 返回包含指定范围内逻辑选择的Shape,扩展为指定的bounds。如果选择范围包括所述第一逻辑字符,则选择被扩展到的所述部分 bounds此开始前TextLayout。 如果该范围包括最后的逻辑字符,选择被扩展到的所述部分bounds此结束后TextLayout。 选择的高度(垂直线上的宽度)始终扩展为bounds。在具有混合方向文本的行上,选择可能是不连续的。 仅显示启动和限制之间逻辑范围中的那些字符。 例如,考虑文本'ABCdef',其中大写字母表示从右到左的行显示的从右到左的文本,逻辑选择从0到4('ABCd')。 文本如下所示,以粗体显示选择,并为扩展名加下划线: defCBA选择是不连续的,因为所选字符在视觉上是不连续的。 另请注意,由于范围包括第一个逻辑字符(A),因此选择将扩展到布局开始之前的bounds部分,在这种情况下(从右到左的行)是右边的部分。bounds。- 参数
-  
              firstEndpoint- 要选择的字符范围内的端点
-  
              secondEndpoint- 要选择的字符范围的另一个端点。 可以小于firstEndpoint。 范围包括min(firstEndpoint,secondEndpoint)处的字符,但不包括max(firstEndpoint,secondEndpoint)。
-  
              bounds- 扩展选择的边界矩形。 这是基线相对坐标。
- 结果
- 包含选择的区域。 这是标准坐标。
- 另请参见:
-  
              getVisualHighlightShape(TextHitInfo, TextHitInfo, Rectangle2D)
 
 -  getLogicalHighlightShapepublic Shape getLogicalHighlightShape(int firstEndpoint, int secondEndpoint) 返回包含指定范围内逻辑选择的Shape,扩展到此TextLayout的自然边界。 此方法是getLogicalHighlightShape的便利重载,它使用此TextLayout的自然边界。- 参数
-  
              firstEndpoint- 要选择的字符范围内的端点
-  
              secondEndpoint- 要选择的字符范围的另一个端点。 可以小于firstEndpoint。 范围包括min(firstEndpoint,secondEndpoint)处的字符,但不包括max(firstEndpoint,secondEndpoint)。
- 结果
-  
              一个Shape包含选择。 这是标准坐标。
 
 -  getBlackBoxBoundspublic Shape getBlackBoxBounds(int firstEndpoint, int secondEndpoint) 返回指定范围内字符的黑框边界。 黑盒边界是一个区域,由与开始和限制之间的字符对应的所有字形的边界框组合而成。 这个区域可以不相交。- 参数
-  
              firstEndpoint- 角色范围的一端
-  
              secondEndpoint- 角色范围的另一端。 可以小于firstEndpoint。
- 结果
-  
              a Shape包围黑匣子边界。 这是标准坐标。
 
 -  hitTestCharpublic TextHitInfo hitTestChar(float x, float y, Rectangle2D bounds) 返回与指定点对应的TextHitInfo。TextLayout映射范围之外的坐标将TextLayout地匹配第一个逻辑字符的前沿或最后一个逻辑字符的后沿,而不管该行中该字符的位置如何。 仅使用基线方向进行此评估。- 参数
-  
              x- 距离此TextLayout的原点的x偏移量。 这是标准坐标。
-  
              y- 距离此TextLayout的原点的y偏移量。 这是标准坐标。
-  
              bounds-的的界限TextLayout。 这是基线相对坐标。
- 结果
- 描述指定点下的字符和边(前导或尾随)的命中。
 
 -  hitTestCharpublic TextHitInfo hitTestChar(float x, float y) 返回与指定点对应的TextHitInfo。 此方法是hitTestChar的便利重载,它使用此TextLayout的自然边界。- 参数
-  
              x- 距离此TextLayout的原点的x偏移量。 这是标准坐标。
-  
              y- 距离此TextLayout的原点的y偏移量。 这是标准坐标。
- 结果
- 描述指定点下的字符和边(前导或尾随)的命中。
 
 -  equalspublic boolean equals(TextLayout rhs) 如果两个布局相等,则返回true。 Obeys的总合同为equals(Object)。- 参数
-  
              rhs- 与此TextLayout进行比较的TextLayout
- 结果
-  
              true如果指定的TextLayout于此TextLayout。
 
 -  toStringpublic String toString() 返回此TextLayout调试信息。
 -  drawpublic void draw(Graphics2D g2, float x, float y) 在指定的Graphics2D上下文中的指定位置呈现此TextLayout。 布局的原点位于x,y。 渲染可能涉及该位置的getBounds()内的任何点。 这使得g2保持不变。 文本沿基线路径呈现。- 参数
-  
              g2- 要在其中呈现布局的Graphics2D上下文
-  
              x- 此TextLayout的原点的X坐标
-  
              y- 此TextLayout的原点的Y坐标
- 另请参见:
-  
              getBounds()
 
 -  getOutlinepublic Shape getOutline(AffineTransform tx) 返回Shape表示此TextLayout的大纲。- 参数
-  
              tx- 可选的AffineTransform申请此TextLayout的大纲。
- 结果
-  
              一个Shape就是这个轮廓TextLayout。 这是标准坐标。
 
 -  getLayoutPathpublic LayoutPath getLayoutPath() 返回LayoutPath,如果布局路径是默认路径,则返回null(x映射到advance,y映射到offset)。- 结果
- 布局路径
- 从以下版本开始:
- 1.6
 
 -  hitToPointpublic void hitToPoint(TextHitInfo hit, Point2D point) 将命中转换为标准坐标中的点。 根据需要,该点位于角色前缘或后缘的角色的基线上。 如果路径在命中所代表的字符一侧被破坏,则该点将与该字符相邻。- 参数
-  
              hit- 要检查的命中。 这必须是TextLayout上的有效命中。
-  
              point- 返回的点。 该点在标准坐标中。
- 异常
-  
              IllegalArgumentException- 如果命中对TextLayout无效。
-  
              NullPointerException- 如果命中或点为空。
- 从以下版本开始:
- 1.6
 
 
-  
 
-