Module  java.desktop
软件包  javax.swing.text

Class FlowView

  • All Implemented Interfaces:
    SwingConstants
    已知直接子类:
    ParagraphView


    public abstract class FlowView
    extends BoxView
    一个试图将孩子流入某些部分受限空间的视图。 这可以用于构建像段落,页面等的东西。流程由以下功能组成。
    • 子视图的逻辑集合,用作形成物理视图的布局池。
    • 将逻辑视图转换为物理(流)视图的策略。
    • 制裁战略的制约因素。
    • 物理结构,代表流。 这个视图的孩子是创建流的逻辑视图的一部分。
    从以下版本开始:
    1.3
    另请参见:
    View
    • 字段详细信息

      • layoutSpan

        protected int layoutSpan
        针对其创建流的默认约束。
      • layoutPool

        protected View layoutPool
        这些是表示此视图表示的元素的子元素的视图(转换为物理视图的逻辑视图)。 这些不是直接的这个观点的孩子。 它们被直接放入行中,或者用于分成更小的块,以形成物理视图。
      • strategy

        protected FlowView.FlowStrategy strategy
        保持流程更新的行为。 默认情况下,这是FlowView的所有实例共享的单例(FlowStrategy是无状态的)。 子类可以创建替代策略,这可能会保持状态。
    • 构造方法详细信息

      • FlowView

        public FlowView​(Element elem,
                        int axis)
        为给定元素构造一个FlowView。
        参数
        elem - 此视图负责的元素
        axis - 可以是View.X_AXIS或View.Y_AXIS
    • 方法详细信息

      • getFlowAxis

        public int getFlowAxis​()
        获取视图应该流过的轴。 默认情况下,这将是与流平行排列的轴垂直的轴(默认流行本身的轴)。 这通常由FlowStrategy
        结果
        视图应该流过的轴
      • getFlowSpan

        public int getFlowSpan​(int index)
        为给定的子索引获取约束跨度。 当FlowStrategy正在更新流程时,这被调用。 可以通过为行约束提供不同的值来形成流。 默认情况下,返回沿着流轴的插补内的整个跨度。
        参数
        index - 正在更新的行的索引。 这应该是一个值> = 0和<getViewCount()。
        结果
        针对给定子索引的约束跨度
        另请参见:
        getFlowStart(int)
      • getFlowStart

        public int getFlowStart​(int index)
        获取沿流动轴线开始流动跨度的位置。 当FlowStrategy正在更新流程时,这被调用。 可以通过为行约束提供不同的值来形成流。
        参数
        index - 正在更新的行的索引。 这应该是一个值> = 0和<getViewCount()。
        结果
        沿着流动轴线的流动跨度开始的位置
        另请参见:
        getFlowSpan(int)
      • createRow

        protected abstract View createRow​()
        创建一个应用于在一个流中保存一行值得孩子的视图。 在更新流程的过程中,添加或删除新的子项(即,添加或删除行)时,FlowStrategy会调用此方法。
        结果
        应该用于在流中持有一行价值儿童的视图
      • loadChildren

        protected void loadChildren​(ViewFactory f)
        加载所有的孩子以初始化视图。 这是由setParent方法调用的。 这被重新实现为不直接加载任何孩子(因为它们在格式化过程中创建)。 如果layoutPool变量为空,则会创建一个LogicalView实例来表示在格式化过程中使用的逻辑视图。
        重写:
        loadChildren中的 CompositeView
        参数
        f - 视图工厂
        另请参见:
        CompositeView.setParent(javax.swing.text.View)
      • getViewIndexAtPosition

        protected int getViewIndexAtPosition​(int pos)
        获取代表模型中给定位置的子视图索引。
        重写:
        getViewIndexAtPositionCompositeView
        参数
        pos - 位置> = 0
        结果
        表示给定位置的视图的索引,如果没有视图表示该位置,则为-1
      • layout

        protected void layout​(int width,
                              int height)
        把孩子带走 如果沿着流轴的跨度发生变化,布局被标记为无效,这将导致超类行为沿着方框轴重新计算布局。 将调用FlowStrategy.layout方法来重新构建流行。 如果此视图的高度发生变化(由框轴的首选大小决定),则会调用preferencesChanged。 所有这一切,执行超类的正常框布局。
        重写:
        layoutBoxView
        参数
        width - 布局> = 0的宽度。这是插入区域的宽度。
        height - 布置高度=> 0这是插入区域内的高度。
      • calculateMinorAxisRequirements

        protected SizeRequirements calculateMinorAxisRequirements​(int axis,
                                                                  SizeRequirements r)
        计算沿短轴的要求。 这是通过调用getMinimumSpan,getPreferredSpan和getMaximumSpan来将请求转发到逻辑视图。
        重写:
        calculateMinorAxisRequirementsBoxView
        参数
        axis - 正在研究的轴
        r - SizeRequirements对象; 如果null将创建一个
        结果
        新初始化的 SizeRequirements对象
        另请参见:
        SizeRequirements
      • setParent

        public void setParent​(View parent)
        设置视图的父级。 如果此视图还没有子loadChildren则会重新实现此功能以提供超类行为以及调用loadChildren方法。 孩子不应该加载在构造函数中,因为设置父Container的行为可能会导致他们尝试搜索层次结构(例如获取主机Container )。 如果此视图具有子loadChildren (视图正从视图层次结构中的一个位置移动到另一个视图),则不会调用loadChildren方法。
        重写:
        setParentCompositeView
        参数
        parent - the parent of the view, null if none