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

Class BoxView

  • All Implemented Interfaces:
    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​()
        获取瓦片轴属性。 这是儿童视图平铺的轴。
        结果
        盒子的主轴, View.X_AXISView.Y_AXIS
        从以下版本开始:
        1.3
      • setAxis

        public void setAxis​(int axis)
        设置瓦片轴属性。 这是儿童视图平铺的轴。
        参数
        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)
        这是由一个孩子调用来指示其首选跨度已更改。 这是为了丢弃缓存的布局信息,以便在下次孩子需要分配时进行新的计算。
        重写:
        preferenceChangedView
        参数
        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)
        设置视图的大小。 如果视图缓存任何布局信息,这将导致视图的布局。 这被实现为调用布局方法与尺寸内插入。
        重写:
        setSizeView
        参数
        width - width> = 0
        height - height> = 0
      • paint

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

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

        public float getAlignment​(int axis)
        确定沿着轴的该视图的所需对准。 这是为了给出所需的总体对准,以使对准点沿着正在平铺的轴线的轴线排列。 平铺的轴将要求居中(即0.5f)。
        重写:
        getAlignmentView
        参数
        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:
        getPreferredSpanView
        参数
        axis - 可以是 View.X_AXISView.Y_AXIS
        结果
        视图想要呈现为> = 0的跨度; 通常,该视图被告知要呈现返回的跨度,尽管不能保证; 父母可以选择调整大小或打破视图
        异常
        IllegalArgumentException - 对于无效的轴类型
        另请参见:
        View.getPreferredSpan(int)
      • getMinimumSpan

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

        public float getMaximumSpan​(int axis)
        确定沿着轴的该视图的最大跨度。
        重写:
        getMaximumSpanView
        参数
        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 - 分配区域; 这是插图内的区域
        结果
        如果点位于区域之前,则为真
      • isAfter

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

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

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

        protected void layout​(int width,
                              int height)
        在框上执行布局
        参数
        width - 宽度(内 width )> = 0
        height - 高度(内 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的视图。 通常, View ,以便EAST的View将处于索引n + 1,而WEST的View将处于索引n-1。在某些情况下,例如具有双向文本,EAST的View可能不在索引n + 1,而是索引n-1,或者WEST的View不在索引n-1,而是索引n + 1。在这种情况下,方法将返回true,表示View以降序排列。 否则方法将返回false,表示View是按升序排列的。

        如果接收View在沿着Y_AXIS放置其View ,则将返回值为positionbias positionbiasView调用相同的方法。 否则这将返回false。

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