模块  java.desktop
软件包  javax.swing.text

Class BoxView

  • 实现的所有接口
    SwingConstants
    已知直接子类:
    BlockViewFlowViewTableViewTableView.TableCellTableView.TableRowWrappedPlainViewZoneView

    public class BoxView
    extends CompositeView
    通过沿轴线平铺子项将其子项排列为盒子形状的视图。 这个盒子有点像在TeX中找到的那里,孩子们有对齐,考虑孩子们的灵活性等等。这是一个构建块,可能有助于表示像行,段落,列表,列的集合,页面等。儿童平铺的轴被视为主轴。 正交轴是短轴。

    每个轴的布局由方法layoutMajorAxislayoutMinorAxis分别处理。 子类可以通过重新实现这些方法来更改布局算法。 根据是否存在缓存的布局信息并且缓存被认为是有效的,将根据需要调用这些方法。 如果沿轴的给定大小发生更改,或者调用layoutChanged强制更新布局,则通常会调用这些方法。 layoutChanged方法使缓存的布局信息无效(如果有)。 发布到父视图的要求通过方法calculateMajorAxisRequirementscalculateMinorAxisRequirements计算。 如果更改布局算法,则可能需要重新实现这些方法。

    • 构造方法详细信息

      • BoxView

        public BoxView​(Element elem,
                       int axis)
        构造一个 BoxView
        参数
        elem - 此视图负责的元素
        axis - View.X_AXISView.Y_AXIS
    • 方法详细信息

      • getAxis

        public int getAxis()
        获取tile轴属性。 这是子视图平铺的轴。
        结果
        盒子的主轴, View.X_AXISView.Y_AXIS
        从以下版本开始:
        1.3
      • setAxis

        public void setAxis​(int axis)
        设置tile轴属性。 这是子视图平铺的轴。
        参数
        axis - View.X_AXISView.Y_AXIS
        从以下版本开始:
        1.3
      • layoutChanged

        public void layoutChanged​(int axis)
        使轴沿布局无效。 如果任何子视图的首选项已更改,则会自动执行此操作。 在某些情况下,可能需要在首选项未更改时重新计算布局。 通过调用此方法,可以将布局标记为无效。 下次在此视图上调用setSize方法时(通常在绘画中),将更新布局。
        参数
        axis - View.X_AXISView.Y_AXIS
        从以下版本开始:
        1.3
      • isLayoutValid

        protected boolean isLayoutValid​(int axis)
        确定布局是否沿给定轴有效。
        参数
        axis - View.X_AXISView.Y_AXIS
        结果
        如果布局沿给定轴有效
        从以下版本开始:
        1.4
      • paintChild

        protected void paintChild​(Graphics g,
                                  Rectangle alloc,
                                  int index)
        涂孩子。 默认情况下就是这样,但是子类可以使用它来绘制相对于子项的内容。
        参数
        g - 图形上下文
        alloc - 要分配的已分配区域
        index - 子索引,> = 0 && <getViewCount()
      • replace

        public void replace​(int index,
                            int length,
                            View[] elems)
        使布局无效并调整请求/分配的缓存大小。 仍然可以为旧布局访问子分配,但新子项的偏移量和跨度为0。
        重写:
        replaceCompositeView
        参数
        index - 插入新视图的子视图的起始索引; 这应该是一个值> = 0和<= getViewCount
        length - 要删除的现有子视图的数量; 这应该是一个值> = 0和<=(getViewCount() - offset)
        elems - 要添加的子视图; 此值可以是null ,表示没有添加子项(有用于删除)
      • preferenceChanged

        public void preferenceChanged​(View child,
                                      boolean width,
                                      boolean height)
        这由孩子调用以指示其首选跨度已更改。 实现此方法是为了丢弃缓存的布局信息,以便下次子项需要分配时进行新的计算。
        重写:
        preferenceChanged ,类 View
        参数
        child - 子视图
        width - 如果宽度首选项应更改, width true
        height - 如果高度首选项应更改, height true
        另请参见:
        JComponent.revalidate()
      • getResizeWeight

        public int getResizeWeight​(int axis)
        获取调整大小的权重。 值0或更小不可调整大小。
        重写:
        getResizeWeightView
        参数
        axis - 可以是 View.X_AXISView.Y_AXIS
        结果
        重量
        异常
        IllegalArgumentException - 表示无效轴
      • setSize

        public void setSize​(float width,
                            float height)
        设置视图的大小。 如果视图缓存任何布局信息,这应该导致视图的布局。 实现此方法是为了使用insets内部的大小调用布局方法。
        重写:
        setSize在类 View
        参数
        width - 宽度> = 0
        height - 高度> = 0
      • paint

        public void paint​(Graphics g,
                          Shape allocation)
        使用给定的渲染表面和该表面上的区域渲染BoxView 仅渲染与给定Graphics的剪辑边界相交的子Graphics
        Specified by:
        paintView
        参数
        g - 要使用的渲染表面
        allocation - 要分配的已分配区域
        另请参见:
        View.paint(java.awt.Graphics, java.awt.Shape)
      • getChildAllocation

        public Shape getChildAllocation​(int index,
                                        Shape a)
        获取给定子视图的分配。 这样可以找出各种视图的位置。 如果布局无效,则实现返回null ,否则执行超类行为。
        重写:
        getChildAllocation ,类 CompositeView
        参数
        index - 孩子的索引,> = 0 &&> getViewCount()
        a - 此视图的分配
        结果
        分配给孩子; null如果anull ; 如果布局无效, null
      • getAlignment

        public float getAlignment​(int axis)
        确定此视图沿轴的所需对齐方式。 实现这是为了给予儿童定位所需的总对齐,其中对齐点沿着与正被平铺的轴正交的轴排列。 被平铺的轴将请求居中(即0.5f)。
        重写:
        getAlignment ,类 View
        参数
        axis - 可以是 View.X_AXISView.Y_AXIS
        结果
        期望的对齐> = 0.0f && <= 1.0f; 这应该是介于0.0和1.0之间的值,其中0表示原点对齐,1.0表示对齐距离原点的整个跨度; 0.5的对齐将是视图的中心
        异常
        IllegalArgumentException - 表示无效轴
      • getPreferredSpan

        public float getPreferredSpan​(int axis)
        确定此视图沿轴的首选跨度。
        Specified by:
        getPreferredSpan ,类 View
        参数
        axis - 可以是 View.X_AXISView.Y_AXIS
        结果
        视图要渲染的范围> = 0; 通常视图被告知渲染到返回的范围内,尽管不能保证; 父母可以选择调整大小或破坏视图
        异常
        IllegalArgumentException - 表示无效的轴类型
        另请参见:
        View.getPreferredSpan(int)
      • getMinimumSpan

        public float getMinimumSpan​(int axis)
        确定此视图沿轴的最小跨度。
        重写:
        getMinimumSpan ,类 View
        参数
        axis - 可以是 View.X_AXISView.Y_AXIS
        结果
        视图要渲染的范围> = 0; 通常视图被告知渲染到返回的范围内,尽管不能保证; 父母可以选择调整大小或破坏视图
        异常
        IllegalArgumentException - 表示无效的轴类型
        另请参见:
        View.getPreferredSpan(int)
      • getMaximumSpan

        public float getMaximumSpan​(int axis)
        确定此视图沿轴的最大跨度。
        重写:
        getMaximumSpan在类 View
        参数
        axis - 可能是 View.X_AXISView.Y_AXIS
        结果
        视图要渲染的范围> = 0; 通常视图被告知渲染到返回的范围内,尽管不能保证; 父母可以选择调整大小或破坏视图
        异常
        IllegalArgumentException - 对于无效的轴类型
        另请参见:
        View.getPreferredSpan(int)
      • isAllocationValid

        protected boolean isAllocationValid()
        孩子的分配是否仍然有效?
        结果
        如果分配仍然有效,则为true
      • isBefore

        protected boolean isBefore​(int x,
                                   int y,
                                   Rectangle innerAlloc)
        确定点是否落在分配的区域之前。
        Specified by:
        isBeforeCompositeView
        参数
        x - X坐标> = 0
        y - Y坐标> = 0
        innerAlloc - 分配的区域; 这是内部区域
        结果
        如果该点位于该区域之前,则为true,否则为false
      • isAfter

        protected boolean isAfter​(int x,
                                  int y,
                                  Rectangle innerAlloc)
        确定点是否落在分配的区域之后。
        Specified by:
        isAfterCompositeView
        参数
        x - X坐标> = 0
        y - Y坐标> = 0
        innerAlloc - 分配的区域; 这是内部区域
        结果
        如果该点位于其他区域之后,则为true
      • getViewAtPoint

        protected View getViewAtPoint​(int x,
                                      int y,
                                      Rectangle alloc)
        在给定坐标处获取子视图。
        Specified by:
        getViewAtPoint ,类 CompositeView
        参数
        x - X坐标> = 0
        y - Y坐标> = 0
        alloc - 父母在进入时的内部分配,应该在退出时更改为孩子的分配
        结果
        风景
      • childAllocation

        protected void childAllocation​(int index,
                                       Rectangle alloc)
        为子视图分配区域。
        Specified by:
        childAllocation在类 CompositeView
        参数
        index - 要分配的子视图的索引,> = 0 && <getViewCount()
        alloc - 分配的区域
      • layout

        protected void layout​(int width,
                              int height)
        在盒子上执行布局
        参数
        width - 宽度(插入内部)> = 0
        height - 高度(插入内部)> = 0
      • getWidth

        public int getWidth()
        返回框的当前宽度。 这是它上次分配的宽度。
        结果
        盒子的当前宽度
      • getHeight

        public int getHeight()
        返回框的当前高度。 这是它最后分配的高度。
        结果
        盒子的当前高度
      • layoutMajorAxis

        protected void layoutMajorAxis​(int targetSpan,
                                       int axis,
                                       int[] offsets,
                                       int[] spans)
        执行框的主轴(即它表示的轴)的布局。 布局的结果(每个子项的偏移量和跨度)放在给定的数组中,这些数组表示沿主轴对子项的分配。
        参数
        targetSpan - 给视图的总跨度,用于布局子项
        axis - 正在 axis的轴
        offsets - 每个子视图的视图原点的偏移量; 这是一个返回值,由此方法的实现填充
        spans - 每个子视图的跨度; 这是一个返回值,由此方法的实现填充
      • layoutMinorAxis

        protected void layoutMinorAxis​(int targetSpan,
                                       int axis,
                                       int[] offsets,
                                       int[] spans)
        执行框的短轴布局(即与其表示的轴正交的轴)。 布局的结果(每个子项的偏移量和跨度)放在给定的数组中,这些数组表示沿着短轴对子项的分配。
        参数
        targetSpan - 给视图的总跨度,用于布局子项
        axis - 正在 axis的轴
        offsets - 每个子视图的视图原点的偏移量; 这是一个返回值,由此方法的实现填充
        spans - 每个子视图的跨度; 这是一个返回值,由此方法的实现填充
      • calculateMajorAxisRequirements

        protected SizeRequirements calculateMajorAxisRequirements​(int axis,
                                                                  SizeRequirements r)
        计算主轴 axis的尺寸要求。
        参数
        axis - 正在研究的轴
        r - SizeRequirements对象; 如果null将创建一个
        结果
        新初始化的 SizeRequirements对象
        另请参见:
        SizeRequirements
      • calculateMinorAxisRequirements

        protected SizeRequirements calculateMinorAxisRequirements​(int axis,
                                                                  SizeRequirements r)
        计算短轴 axis的尺寸要求。
        参数
        axis - 正在研究的轴
        r - SizeRequirements对象; 如果null将创建一个
        结果
        新初始化的 SizeRequirements对象
        另请参见:
        SizeRequirements
      • baselineLayout

        protected void baselineLayout​(int targetSpan,
                                      int axis,
                                      int[] offsets,
                                      int[] spans)
        计算在此每个子视图的位置和程度 BoxView给出的 targetSpan ,这是我们必须一起工作的区域的宽度(或高度)。
        参数
        targetSpan - 视图的总跨度,用于布局子项
        axis - 正在研究的轴, View.X_AXISView.Y_AXIS
        offsets - 此方法填充的空数组,其值指定每个子视图的位置
        spans - 由此方法填充的空数组,其值指定每个子视图的范围
      • baselineRequirements

        protected SizeRequirements baselineRequirements​(int axis,
                                                        SizeRequirements r)
        通过检查每个子视图的大小来计算此 BoxView的大小要求。
        参数
        axis - 正在研究的轴
        r - SizeRequirements对象; 如果null将创建一个
        结果
        新初始化的 SizeRequirements对象
      • getOffset

        protected int getOffset​(int axis,
                                int childIndex)
        获取特定子项的当前布局的偏移量。
        参数
        axis - 正在研究的轴
        childIndex - 所请求孩子的索引
        结果
        指定子项的偏移量(位置)
      • getSpan

        protected int getSpan​(int axis,
                              int childIndex)
        获取特定孩子当前布局的跨度。
        参数
        axis - 正在研究的轴
        childIndex - 所请求孩子的索引
        结果
        指定子项的跨度(宽度或高度)
      • flipEastAndWestAtEnds

        protected boolean flipEastAndWestAtEnds​(int position,
                                                Position.Bias bias)
        确定下一个视图的放置方向。 考虑索引n处的视图。 通常情况下, ViewView的,因此View将位于指数n + 1,而View位于指数n - 1.在某些情况下,例如双向文本,有可能View到EAST不在索引n + 1,而是在索引n - 1,或者View到WEST不在索引n - 1,但索引n + 1.在这种情况下这方法将返回true,表示View s按降序排列。 否则该方法将返回false,表示View是按升序排列的。

        如果接收器沿Y_AXIS放置其View s,则将返回调用View负责渲染positionbias的相同方法的值。 否则这将返回false。

        重写:
        flipEastAndWestAtEnds在类 CompositeView
        参数
        position - 进入模型的位置
        bias - Position.Bias.ForwardPosition.Bias.Backward
        结果
        如果真View周边安全的View响应用于渲染positionbias按降序奠定了; 否则是假的