Module  javafx.graphics
软件包  javafx.scene.text

Class TextFlow

  • All Implemented Interfaces:
    StyleableEventTarget


    public class TextFlow
    extends Pane
    TextFlow是设计用于布置富文本的特殊布局。 它可以用于在单个文本流中布置多个Text节点。 TextFlow使用文本和每个Text节点的字体加上它自己的宽度和文本对齐方式来确定每个孩子的位置。 单个Text节点可以跨越多条线路,由于包裹,并且由于双向重新排序, Text节点的视觉位置可能与逻辑位置不同。

    任何其他节点,而不是文本,将被视为文本布局中的嵌入对象。 它将使用其首选的宽度,高度和基线偏移量插入到内容中。

    当一个Text节点位于一个TextFlow内部时,其某些属性将被忽略。 例如, Text节点的x和y属性将被忽略,因为节点的位置由父节点决定。 同样, Text节点中的包装宽度被忽略,因为用于包装的宽度是TextFlow的宽度。 该值pickOnBounds一个财产Text设置为false当它被TextFlow的布局。 这是因为单个Text节点的内容可以分割并放置在TextFlow上的不同位置(通常是由于断线和双向重新排序)。

    布局的包装宽度由区域的当前宽度决定。 可以通过设置textflow的首选宽度来指定应用程序。 如果不需要打包,应用程序可以将首选项设置为Double.MAX_VALUE或Region.USE_COMPUTED_SIZE。

    段落由任何文本小孩中的'\n'分隔。

    TextFlow示例:

       Text text1 = new Text("Big italic red text"); text1.setFill(Color.RED); text1.setFont(Font.font("Helvetica", FontPosture.ITALIC, 40)); Text text2 = new Text(" little bold blue text"); text2.setFill(Color.BLUE); text2.setFont(Font.font("Helvetica", FontWeight.BOLD, 10)); TextFlow textFlow = new TextFlow(text1, text2);  

    TextFlow布置每个受管孩子,不管孩子的可见属性值如何; 所有布局计算都忽略非托管孩子。

    TextFlow可以使用CSS来设计背景和边框。 有关详细信息,请参阅Region超类。

    可调整范围

    文本流的父级将在布局期间在文本流范围内调整文本流的大小。 默认情况下,文本流根据其内容计算此范围,如下表所示。

    TextFlow Resize Table width height minimum left/right insets top/bottom insets plus the height of the text content preferred left/right insets plus the width of the text content top/bottom insets plus the height of the text content maximum Double.MAX_VALUE Double.MAX_VALUE

    文本流的无界最大宽度和高度是父级的指示,它可以调整大小超出其首选大小,以填充分配给它的空间。

    TextFlow提供了直接设置尺寸范围的属性。 这些属性默认为哨兵值Region.USE_COMPUTED_SIZE,但是应用程序可能会根据需要将它们设置为其他值:

       textflow.setMaxWidth(500);  
    应用程序可以通过将这些属性设置回Region.USE_COMPUTED_SIZE来还原计算值。

    默认情况下,TextFlow不会剪切其内容,因此如果小孩的pref大小大于文本流必须分配的空间,则儿童的边界可能会扩展到其自己的边界之外。

    从以下版本开始:
    JavaFX 8.0
    • 构造方法详细信息

      • TextFlow

        public TextFlow​()
        创建一个空TextFlow布局。
      • TextFlow

        public TextFlow​(Node... children)
        使用给定的子项创建TextFlow布局。
        参数
        children - 儿童。
    • 方法详细信息

      • hitTest

        public final HitInfo hitTest​(Point2D point)
        将本地点映射到内容中的索引。
        参数
        point - 要测试的指定点
        结果
        一个 HitInfo代表发现的字符索引
        从以下版本开始:
        9
      • caretShape

        public PathElement[] caretShape​(int charIndex,
                                        boolean leading)
        以局部坐标返回插入符号的形状。
        参数
        charIndex - 插入符号的字符索引
        leading - 插入符号是否偏离字符的前沿
        结果
        一个 PathElement的数组,可以用来创建一个 Shape
        从以下版本开始:
        9
      • rangeShape

        public final PathElement[] rangeShape​(int start,
                                              int end)
        返回局部坐标中文本范围的形状。
        参数
        start - 范围的起始字符索引
        end - 范围的结束字符索引(不包含)
        结果
        一个 PathElement的阵列,可以用来创建一个 Shape
        从以下版本开始:
        9
      • usesMirroring

        public boolean usesMirroring​()
        描述从类复制: Node
        确定当节点方向是从右到左时是否应该镜像节点。

        当一个节点被镜像时,原点会自动移动到右上角,导致节点布局孩子,并使用镜像转换从右到左绘制。 一些节点可能希望从右到左绘制,而不使用转换。 这些节点将会回复false并实现从右到左的方向,而不使用自动转换。

        重写:
        usesMirroringNode
        结果
        如果这个 Node应该镜像, Node true
      • setWidth

        protected void setWidth​(double value)
        从类别复制的描述: Region
        设置属性宽度的值。
        重写:
        setWidthRegion
      • computePrefWidth

        protected double computePrefWidth​(double height)
        描述从类复制: Region
        计算给定高度的该区域的首选宽度。 区域子类应该覆盖此方法,以根据其内容和布局策略返回适当的值。 如果子类没有VERTICAL内容偏差,则可以忽略height参数。
        重写:
        computePrefWidthRegion
        参数
        height - 如果首选宽度取决于应该使用的高度
        结果
        计算这个区域的首选宽度
      • computePrefHeight

        protected double computePrefHeight​(double width)
        描述从类复制: Region
        计算给定宽度的该区域的首选高度; 区域子类应该覆盖此方法,以根据其内容和布局策略返回适当的值。 如果子类没有HORIZONTAL内容偏差,则可以忽略width参数。
        重写:
        computePrefHeightRegion
        参数
        width - 如果首选的高度取决于应该使用的宽度
        结果
        该区域计算的优选高度
      • computeMinHeight

        protected double computeMinHeight​(double width)
        描述从类复制: Region
        计算该区域的最小高度。 默认返回顶部和底部插入的总和。 区域子类应该覆盖此方法,以根据其内容和布局策略返回适当的值。 如果子类没有HORIZONTAL内容偏差,则可以忽略width参数。
        重写:
        computeMinHeightRegion
        参数
        width - 如果最小高度取决于应该使用的宽度
        结果
        计算该区域的最小高度
      • requestLayout

        public void requestLayout​()
        描述从类复制: Parent
        请求在渲染下一个场景之前执行布局传递。 这是异步批量发生一次“脉冲”或动画帧。

        如果此父对象是布局根或非托管,则将直接添加到场景的脏布局列表中,否则将调用requestParentLayout。

        重写:
        requestLayoutParent
      • layoutChildren

        protected void layoutChildren​()
        描述从类复制: Parent
        在布局传递过程中调用这个Parent的孩子。 默认情况下,它只会将受管理的可调整大小的内容的大小设置为其首选大小,并且不会执行任何节点定位。

        子类应该根据需要重写此函数以布局内容。

        重写:
        layoutChildrenParent
      • setTextAlignment

        public final void setTextAlignment​(TextAlignment value)
        设置textAlignment属性的值。
        Property description:
        定义水平文本对齐。
        Default value:
        TextAlignment.LEFT
      • getTextAlignment

        public final TextAlignment getTextAlignment​()
        获取属性textAlignment的值。
        Property description:
        定义水平文本对齐。
        Default value:
        TextAlignment.LEFT
      • setLineSpacing

        public final void setLineSpacing​(double spacing)
        设置属性lineSpacing的值。
        Property description:
        定义行之间像素的垂直空间。
        Default value:
        0
        从以下版本开始:
        JavaFX 8.0
      • getLineSpacing

        public final double getLineSpacing​()
        获取属性lineSpacing的值。
        Property description:
        定义行之间像素的垂直空间。
        Default value:
        0
        从以下版本开始:
        JavaFX 8.0
      • getBaselineOffset

        public final double getBaselineOffset​()
        描述从类复制: Parent
        基于第一个受管理的子节点计算基线偏移量。 如果没有这样的孩子,返回Node.getBaselineOffset()
        重写:
        getBaselineOffsetParent
        结果
        基线偏移
      • getClassCssMetaData

        public static List<CssMetaData<? extends Styleable,?>> getClassCssMetaData​()
        结果
        与此类相关联的CssMetaData可能包括其类的CssMetaData。
      • queryAccessibleAttribute

        public Object queryAccessibleAttribute​(AccessibleAttribute attribute,
                                               Object... parameters)
        该方法由辅助技术调用以请求属性的值。

        子类通常覆盖此方法来实现特定角色所需的属性。
        如果未处理特定属性,则必须调用超类实现。

        重写:
        queryAccessibleAttributeParent
        参数
        attribute - 请求的属性
        parameters - 可选参数列表
        结果
        请求的属性的值
        另请参见:
        AccessibleAttribute