java.lang.Object
javax.swing.text.View
javax.swing.text.CompositeView
javax.swing.text.BoxView
- 所有已实现的接口:
SwingConstants
- 已知子类:
BlockView,FlowView,TableView,TableView.TableCell,TableView.TableRow,WrappedPlainView,ZoneView
通过沿轴平铺其子项,将其子项排列成盒子形状的视图。该框有点像在 TeX 中找到的框,其中子项对齐,考虑了子项的灵活性等。这是一个构建块,可能有助于表示诸如行、段落、列表、列的集合之类的东西,页面等。子级平铺的轴被认为是主轴。正交轴是短轴。
每个轴的布局由方法 layoutMajorAxis 和 layoutMinorAxis 分别处理。子类可以通过重新实现这些方法来改变布局算法。这些方法将在必要时根据是否存在缓存的布局信息以及缓存是否有效来调用。如果沿轴的给定大小发生变化,或者如果调用 layoutChanged 以强制更新布局,通常会调用这些方法。 layoutChanged 方法使缓存的布局信息无效(如果有的话)。发布到父视图的需求是通过方法 calculateMajorAxisRequirements 和 calculateMinorAxisRequirements 计算的。如果更改布局算法,则可能需要重新实现这些方法。
-
字段摘要
在类 javax.swing.text.View 中声明的字段
BadBreakWeight, ExcellentBreakWeight, ForcedBreakWeight, GoodBreakWeight, X_AXIS, Y_AXIS在接口 javax.swing.SwingConstants 中声明的字段
BOTTOM, CENTER, EAST, HORIZONTAL, LEADING, LEFT, NEXT, NORTH, NORTH_EAST, NORTH_WEST, PREVIOUS, RIGHT, SOUTH, SOUTH_EAST, SOUTH_WEST, TOP, TRAILING, VERTICAL, WEST -
构造方法总结
构造方法 -
方法总结
修饰符和类型方法描述protected voidbaselineLayout(int targetSpan, int axis, int[] offsets, int[] spans) 在给定targetSpan的情况下计算此BoxView中每个子视图的位置和范围,这是我们必须使用的区域的宽度(或高度)。protected SizeRequirementsbaselineRequirements(int axis, SizeRequirements r) 通过检查每个子视图的大小来计算此BoxView的大小要求。protected SizeRequirementscalculateMajorAxisRequirements(int axis, SizeRequirements r) 计算长轴axis的尺寸要求。protected SizeRequirementscalculateMinorAxisRequirements(int axis, SizeRequirements r) 计算短轴axis的尺寸要求。protected voidchildAllocation(int index, Rectangle alloc) 为子视图分配区域。protected booleanflipEastAndWestAtEnds(int position, Position.Bias bias) 确定下一个视图的放置方向。protected void将给定的DocumentEvent转发给需要通知模型更改的子视图。floatgetAlignment(int axis) 确定此视图沿轴的所需对齐方式。intgetAxis()获取瓦片轴属性。getChildAllocation(int index, Shape a) 获取给定子视图的分配。int返回框的当前高度。floatgetMaximumSpan(int axis) 确定此视图沿轴的最大跨度。floatgetMinimumSpan(int axis) 确定此视图沿轴的最小跨度。protected intgetOffset(int axis, int childIndex) 获取特定子项当前布局的偏移量。floatgetPreferredSpan(int axis) 确定此视图沿轴的首选跨度。intgetResizeWeight(int axis) 获取调整大小权重。protected intgetSpan(int axis, int childIndex) 获取特定子项当前布局的跨度。protected ViewgetViewAtPoint(int x, int y, Rectangle alloc) 获取给定坐标处的子视图。intgetWidth()返回框的当前宽度。protected boolean确定点是否落在分配的区域之后。protected boolean子级的拨款还有效吗?protected boolean确定点是否落在分配的区域之前。protected booleanisLayoutValid(int axis) 确定布局是否沿给定轴有效。protected voidlayout(int width, int height) 在盒子上进行布局voidlayoutChanged(int axis) 使沿轴的布局无效。protected voidlayoutMajorAxis(int targetSpan, int axis, int[] offsets, int[] spans) 对框的主轴(即它代表的轴)执行布局。protected voidlayoutMinorAxis(int targetSpan, int axis, int[] offsets, int[] spans) 对盒子的短轴进行布局(即垂直于它所代表的轴的轴)。modelToView(int pos, Shape a, Position.Bias b) 提供从文档模型坐标空间到映射到它的视图的坐标空间的映射。void使用给定的渲染表面和该表面上的区域渲染BoxView。protected voidpaintChild(Graphics g, Rectangle alloc, int index) 画一个子级。voidpreferenceChanged(View child, boolean width, boolean height) 这是由子级调用以指示其首选跨度已更改。void使布局无效并调整请求/分配缓存的大小。voidsetAxis(int axis) 设置平铺轴属性。voidsetSize(float width, float height) 设置视图的大小。intviewToModel(float x, float y, Shape a, Position.Bias[] bias) 提供从视图坐标空间到模型的逻辑坐标空间的映射。在类 javax.swing.text.CompositeView 中声明的方法
getBottomInset, getInsideAllocation, getLeftInset, getNextEastWestVisualPositionFrom, getNextNorthSouthVisualPositionFrom, getNextVisualPositionFrom, getRightInset, getTopInset, getView, getViewAtPosition, getViewCount, getViewIndex, getViewIndexAtPosition, loadChildren, modelToView, setInsets, setParagraphInsets, setParent在类 javax.swing.text.View 中声明的方法
append, breakView, changedUpdate, createFragment, forwardUpdateToView, getAttributes, getBreakWeight, getContainer, getDocument, getElement, getEndOffset, getGraphics, getParent, getStartOffset, getToolTipText, getViewFactory, getViewIndex, insert, insertUpdate, isVisible, modelToView, remove, removeAll, removeUpdate, updateChildren, updateLayout, viewToModel
-
构造方法详细信息
-
BoxView
构造一个BoxView- 参数:
elem- 此视图负责的元素axis-View.X_AXIS或View.Y_AXIS
-
-
方法详情
-
getAxis
public int getAxis()获取瓦片轴属性。这是子视图平铺所沿的轴。- 返回:
-
盒子的主轴,
View.X_AXIS或View.Y_AXIS - 自从:
- 1.3
-
setAxis
public void setAxis(int axis) 设置平铺轴属性。这是子视图平铺所沿的轴。- 参数:
axis-View.X_AXIS或View.Y_AXIS- 自从:
- 1.3
-
layoutChanged
public void layoutChanged(int axis) 使沿轴的布局无效。如果任何子视图的首选项已更改,则会自动发生这种情况。在某些情况下,当首选项未更改时可能需要重新计算布局。可以通过调用此方法将布局标记为无效。下次在此视图上调用setSize方法时(通常是在绘画中),布局将更新。- 参数:
axis-View.X_AXIS或View.Y_AXIS- 自从:
- 1.3
-
isLayoutValid
protected boolean isLayoutValid(int axis) 确定布局是否沿给定轴有效。- 参数:
axis-View.X_AXIS或View.Y_AXIS- 返回:
- 如果布局沿给定轴有效
- 自从:
- 1.4
-
paintChild
画一个子级。默认情况下它就是这样做的,但是子类可以使用它来绘制与子类相关的东西。- 参数:
g- 图形上下文alloc- 要绘制的分配区域index- 子索引,>= 0 && < getViewCount()
-
replace
使布局无效并调整请求/分配缓存的大小。旧布局仍可访问子分配,但新子分配的偏移量和跨度将为 0。- 重写:
replace在类CompositeView中- 参数:
index- 插入新视图的子视图的起始索引;这应该是一个值 >= 0 且 <= getViewCountlength- 要删除的现有子视图的数量;这应该是一个值 >= 0 且 <= (getViewCount() - offset)elems- 要添加的子视图;此值可以是null以指示未添加任何子项(对于删除很有用)
-
forwardUpdate
protected void forwardUpdate(DocumentEvent.ElementChange ec, DocumentEvent e, Shape a, ViewFactory f) 将给定的DocumentEvent转发给需要通知模型更改的子视图。如果一个孩子改变了它的要求,并且在转发之前分配是有效的,那么盒子从起始孩子到盒子末端的部分将被重新绘制。- 重写:
forwardUpdate在类View中- 参数:
ec- 对此视图负责的元素的更改(如果没有更改,则可能是null)e- 来自关联文档的更改信息a- 视图的当前分配f- 如果视图有子视图,用于重建的工厂- 自从:
- 1.3
- 参见:
-
preferenceChanged
这是由子级调用以指示其首选跨度已更改。这是为了丢弃缓存的布局信息,以便在下一次子项需要分配时进行新的计算。- 重写:
preferenceChanged在类View中- 参数:
child- 子视图width- 如果宽度首选项应该改变则为真height- 如果高度偏好应该改变则为真- 参见:
-
getResizeWeight
public int getResizeWeight(int axis) 获取调整大小权重。 0 或更小的值不可调整大小。- 重写:
getResizeWeight在类View中- 参数:
axis- 可能是View.X_AXIS或View.Y_AXIS- 返回:
- 重量
- 抛出:
IllegalArgumentException- 对于无效轴
-
setSize
public void setSize(float width, float height) 设置视图的大小。如果视图缓存任何布局信息,这应该会导致视图布局。这是为了调用带有 insets 内尺寸的布局方法。 -
paint
使用给定的渲染表面和该表面上的区域渲染BoxView。只有与给定Graphics的剪辑边界相交的孩子才会被渲染。 -
getChildAllocation
获取给定子视图的分配。这使得能够找出各种视图所在的位置。如果布局无效,则实现返回null,否则执行超类行为。- 重写:
getChildAllocation在类CompositeView中- 参数:
index- 孩子的索引,>= 0 && > getViewCount()a- 分配给这个视图- 返回:
-
分配给孩子;或者
null如果a是null;或者null如果布局无效
-
modelToView
提供从文档模型坐标空间到映射到它的视图的坐标空间的映射。这确保在调用超类之前分配是有效的。- 重写:
modelToView在类CompositeView中- 参数:
pos- 要转换的位置 >= 0a- 要渲染到的分配区域b-Position.Bias.Forward或Position.Bias.Backward的偏置值- 返回:
- 给定位置的边界框
- 抛出:
BadLocationException- 如果给定位置不代表相关文档中的有效位置- 参见:
-
viewToModel
提供从视图坐标空间到模型的逻辑坐标空间的映射。- 重写:
viewToModel在类CompositeView中- 参数:
x- 要转换的视图位置的 x 坐标 >= 0y- 要转换的视图位置的 y 坐标 >= 0a- 要渲染到的分配区域bias-Position.Bias.Forward或Position.Bias.Backward- 返回:
- 模型中最能代表视图中给定点的位置 >= 0
- 参见:
-
getAlignment
public float getAlignment(int axis) 确定此视图沿轴的所需对齐方式。这是为了给出定位子级所需的总对齐方式,对齐点沿着与正在平铺的轴正交的轴排列。平铺的轴将要求居中(即 0.5f)。- 重写:
getAlignment在类View中- 参数:
axis- 可能是View.X_AXIS或View.Y_AXIS- 返回:
- 所需的对齐 >= 0.0f && <= 1.0f;这应该是一个介于 0.0 和 1.0 之间的值,其中 0 表示对齐原点,1.0 表示对齐远离原点的整个跨度; 0.5 的对齐将是视图的中心
- 抛出:
IllegalArgumentException- 对于无效轴
-
getPreferredSpan
public float getPreferredSpan(int axis) 确定此视图沿轴的首选跨度。- 指定者:
getPreferredSpan在类View中- 参数:
axis- 可能是View.X_AXIS或View.Y_AXIS- 返回:
- 视图想要呈现的跨度 >= 0;通常,视图会被告知渲染到返回的范围内,尽管不能保证;父级可以选择调整大小或打破视图
- 抛出:
IllegalArgumentException- 对于无效的轴类型
-
getMinimumSpan
public float getMinimumSpan(int axis) 确定此视图沿轴的最小跨度。- 重写:
getMinimumSpan在类View中- 参数:
axis- 可能是View.X_AXIS或View.Y_AXIS- 返回:
- 视图想要呈现的跨度 >= 0;通常,视图会被告知渲染到返回的范围内,尽管不能保证;父级可以选择调整大小或打破视图
- 抛出:
IllegalArgumentException- 对于无效的轴类型- 参见:
-
getMaximumSpan
public float getMaximumSpan(int axis) 确定此视图沿轴的最大跨度。- 重写:
getMaximumSpan在类View中- 参数:
axis- 可能是View.X_AXIS或View.Y_AXIS- 返回:
- 视图想要呈现的跨度 >= 0;通常,视图会被告知渲染到返回的范围内,尽管不能保证;父级可以选择调整大小或打破视图
- 抛出:
IllegalArgumentException- 对于无效的轴类型- 参见:
-
isAllocationValid
protected boolean isAllocationValid()子级的拨款还有效吗?- 返回:
- 如果分配仍然有效则为真
-
isBefore
确定点是否落在分配的区域之前。- 指定者:
isBefore在类CompositeView中- 参数:
x- X 坐标 >= 0y- Y 坐标 >= 0innerAlloc- 分配的区域;这是insets内部的区域- 返回:
- 如果该点位于该区域之前,则为 true 否则为 false
-
isAfter
确定点是否落在分配的区域之后。- 指定者:
isAfter在类CompositeView中- 参数:
x- X 坐标 >= 0y- Y 坐标 >= 0innerAlloc- 分配的区域;这是insets内部的区域- 返回:
- 如果该点位于该区域之后,则为 true 否则为 false
-
getViewAtPoint
获取给定坐标处的子视图。- 指定者:
getViewAtPoint在类CompositeView中- 参数:
x- X 坐标 >= 0y- Y 坐标 >= 0alloc- 父母在进入时的内部分配,应该在退出时更改为孩子的分配- 返回:
- 风景
-
childAllocation
为子视图分配区域。- 指定者:
childAllocation在类CompositeView中- 参数:
index- 要分配的子视图的索引,>= 0 && < getViewCount()alloc- 分配的区域
-
layout
protected void layout(int width, int height) 在盒子上进行布局- 参数:
width- 宽度(insets内部)>= 0height- 高度(insets内部)>= 0
-
getWidth
public int getWidth()返回框的当前宽度。这是上次分配的宽度。- 返回:
- 框的当前宽度
-
getHeight
public int getHeight()返回框的当前高度。这是上次分配的高度。- 返回:
- 盒子的当前高度
-
layoutMajorAxis
protected void layoutMajorAxis(int targetSpan, int axis, int[] offsets, int[] spans) 对框的主轴(即它代表的轴)执行布局。布局的结果(每个子项的偏移量和跨度)被放置在给定的数组中,这些数组表示沿主轴分配给子项。- 参数:
targetSpan- 给视图的总跨度,将用于布局子视图axis- 正在布置的轴offsets- 每个子视图距视图原点的偏移量;这是一个返回值,由这个方法的实现填充spans- 每个子视图的跨度;这是一个返回值,由这个方法的实现填充
-
layoutMinorAxis
protected void layoutMinorAxis(int targetSpan, int axis, int[] offsets, int[] spans) 对盒子的短轴进行布局(即垂直于它所代表的轴的轴)。布局的结果(每个子级的偏移量和跨度)被放置在给定的数组中,这些数组表示沿短轴分配给子级的数组。- 参数:
targetSpan- 给视图的总跨度,将用于布局子视图axis- 正在布置的轴offsets- 每个子视图距视图原点的偏移量;这是一个返回值,由这个方法的实现填充spans- 每个子视图的跨度;这是一个返回值,由这个方法的实现填充
-
calculateMajorAxisRequirements
计算长轴axis的尺寸要求。- 参数:
axis- 正在研究的轴r-SizeRequirements对象;如果null将被创建- 返回:
-
新初始化的
SizeRequirements对象 - 参见:
-
calculateMinorAxisRequirements
计算短轴axis的尺寸要求。- 参数:
axis- 正在研究的轴r-SizeRequirements对象;如果null将被创建- 返回:
-
新初始化的
SizeRequirements对象 - 参见:
-
baselineLayout
protected void baselineLayout(int targetSpan, int axis, int[] offsets, int[] spans) 在给定targetSpan的情况下计算此BoxView中每个子视图的位置和范围,这是我们必须使用的区域的宽度(或高度)。- 参数:
targetSpan- 给视图的总跨度,将用于布局子视图axis- 正在研究的轴,View.X_AXIS或View.Y_AXISoffsets- 由此方法填充的空数组,其值指定每个子视图的位置spans- 由此方法填充的空数组,其值指定每个子视图的范围
-
baselineRequirements
通过检查每个子视图的大小来计算此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
确定下一个视图的放置方向。考虑索引 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放置,这将返回在负责渲染position和bias的View上调用相同方法的值。否则这将返回 false。- 重写:
flipEastAndWestAtEnds在类CompositeView中- 参数:
position- 在模型中的位置bias-Position.Bias.Forward或Position.Bias.Backward- 返回:
-
如果
View周围的View响应渲染position和bias是按降序排列的,则为真;否则为假
-