- 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
public class BoxViewextends CompositeView
通过沿轴线平铺子项将其子项排列为盒子形状的视图。 这个盒子有点像在TeX中找到的那里,孩子们有对齐,考虑孩子们的灵活性等等。这是一个构建块,可能有助于表示像行,段落,列表,列的集合,页面等。儿童平铺的轴被视为主轴。 正交轴是短轴。每个轴的布局由方法
layoutMajorAxis
和layoutMinorAxis
分别处理。 子类可以通过重新实现这些方法来更改布局算法。 根据是否存在缓存的布局信息并且缓存被认为是有效的,将根据需要调用这些方法。 如果沿轴的给定大小发生更改,或者调用layoutChanged
强制更新布局,则通常会调用这些方法。layoutChanged
方法使缓存的布局信息无效(如果有)。 发布到父视图的要求通过方法calculateMajorAxisRequirements
和calculateMinorAxisRequirements
计算。 如果更改布局算法,则可能需要重新实现这些方法。
-
-
字段汇总
-
声明的属性在类 javax.swing.text.View
BadBreakWeight, ExcellentBreakWeight, ForcedBreakWeight, GoodBreakWeight, X_AXIS, Y_AXIS
-
Fields declared in interface 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 void
baselineLayout(int targetSpan, int axis, int[] offsets, int[] spans)
计算在此每个子视图的位置和程度BoxView
给出的targetSpan
,这是我们必须一起工作的区域的宽度(或高度)。protected SizeRequirements
baselineRequirements(int axis, SizeRequirements r)
通过检查每个子视图的大小来计算此BoxView
的大小要求。protected SizeRequirements
calculateMajorAxisRequirements(int axis, SizeRequirements r)
计算长轴axis
的尺寸要求。protected SizeRequirements
calculateMinorAxisRequirements(int axis, SizeRequirements r)
计算短轴axis
的尺寸要求。protected void
childAllocation(int index, Rectangle alloc)
为子视图分配区域。protected boolean
flipEastAndWestAtEnds(int position, Position.Bias bias)
确定下一个视图的放置方向。protected void
forwardUpdate(DocumentEvent.ElementChange ec, DocumentEvent e, Shape a, ViewFactory f)
将给定的DocumentEvent
转发给需要通知模型更改的子视图。float
getAlignment(int axis)
确定此视图沿轴的所需对齐方式。int
getAxis()
获取tile轴属性。Shape
getChildAllocation(int index, Shape a)
获取给定子视图的分配。int
getHeight()
返回框的当前高度。float
getMaximumSpan(int axis)
确定此视图沿轴的最大跨度。float
getMinimumSpan(int axis)
确定此视图沿轴的最小跨度。protected int
getOffset(int axis, int childIndex)
获取特定子项的当前布局的偏移量。float
getPreferredSpan(int axis)
确定此视图沿轴的首选跨度。int
getResizeWeight(int axis)
获取调整大小的权重。protected int
getSpan(int axis, int childIndex)
获取特定孩子当前布局的跨度。protected View
getViewAtPoint(int x, int y, Rectangle alloc)
在给定坐标处获取子视图。int
getWidth()
返回框的当前宽度。protected boolean
isAfter(int x, int y, Rectangle innerAlloc)
确定点是否落在分配的区域之后。protected boolean
isAllocationValid()
孩子的分配是否仍然有效?protected boolean
isBefore(int x, int y, Rectangle innerAlloc)
确定点是否落在分配的区域之前。protected boolean
isLayoutValid(int axis)
确定布局是否沿给定轴有效。protected void
layout(int width, int height)
在盒子上执行布局void
layoutChanged(int axis)
使轴沿布局无效。protected void
layoutMajorAxis(int targetSpan, int axis, int[] offsets, int[] spans)
执行框的主轴(即它表示的轴)的布局。protected void
layoutMinorAxis(int targetSpan, int axis, int[] offsets, int[] spans)
执行框的短轴布局(即与其表示的轴正交的轴)。Shape
modelToView(int pos, Shape a, Position.Bias b)
提供从文档模型坐标空间到映射到它的视图的坐标空间的映射。void
paint(Graphics g, Shape allocation)
使用给定的渲染表面和该表面上的区域渲染BoxView
。protected void
paintChild(Graphics g, Rectangle alloc, int index)
涂孩子。void
preferenceChanged(View child, boolean width, boolean height)
这由孩子调用以指示其首选跨度已更改。void
replace(int index, int length, View[] elems)
使布局无效并调整请求/分配的缓存大小。void
setAxis(int axis)
设置tile轴属性。void
setSize(float width, float height)
设置视图的大小。int
viewToModel(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
public BoxView(Element elem, int axis)
构造一个BoxView
。- 参数
-
elem
- 此视图负责的元素 -
axis
-View.X_AXIS
或View.Y_AXIS
-
-
方法详细信息
-
getAxis
public int getAxis()
获取tile轴属性。 这是子视图平铺的轴。- 结果
- 盒子的主轴,
View.X_AXIS
或View.Y_AXIS
- 从以下版本开始:
- 1.3
-
setAxis
public void setAxis(int axis)
设置tile轴属性。 这是子视图平铺的轴。- 参数
-
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
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。- 重写:
-
replace
类CompositeView
- 参数
-
index
- 插入新视图的子视图的起始索引; 这应该是一个值> = 0和<= getViewCount -
length
- 要删除的现有子视图的数量; 这应该是一个值> = 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
- 另请参见:
-
View.insertUpdate(javax.swing.event.DocumentEvent, java.awt.Shape, javax.swing.text.ViewFactory)
,View.removeUpdate(javax.swing.event.DocumentEvent, java.awt.Shape, javax.swing.text.ViewFactory)
,View.changedUpdate(javax.swing.event.DocumentEvent, java.awt.Shape, javax.swing.text.ViewFactory)
-
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或更小不可调整大小。- 重写:
-
getResizeWeight
在View
类 - 参数
-
axis
- 可以是View.X_AXIS
或View.Y_AXIS
- 结果
- 重量
- 异常
-
IllegalArgumentException
- 表示无效轴
-
setSize
public void setSize(float width, float height)
设置视图的大小。 如果视图缓存任何布局信息,这应该导致视图的布局。 实现此方法是为了使用insets内部的大小调用布局方法。
-
paint
public void paint(Graphics g, Shape allocation)
使用给定的渲染表面和该表面上的区域渲染BoxView
。 仅渲染与给定Graphics
的剪辑边界相交的子Graphics
。- Specified by:
-
paint
在View
类 - 参数
-
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
如果a
是null
; 如果布局无效,null
-
modelToView
public Shape modelToView(int pos, Shape a, Position.Bias b) throws BadLocationException
提供从文档模型坐标空间到映射到它的视图的坐标空间的映射。 这可以确保在调用超类之前分配是有效的。- 重写:
-
modelToView
在CompositeView
类 - 参数
-
pos
- 要转换的位置> = 0 -
a
- 要分配的区域 -
b
- 偏差值Position.Bias.Forward
或Position.Bias.Backward
- 结果
- 给定位置的边界框
- 异常
-
BadLocationException
- 如果给定位置不代表关联文档中的有效位置 - 另请参见:
-
View.modelToView(int, java.awt.Shape, javax.swing.text.Position.Bias)
-
viewToModel
public int viewToModel(float x, float y, Shape a, Position.Bias[] bias)
提供从视图坐标空间到模型的逻辑坐标空间的映射。- 重写:
-
viewToModel
在CompositeView
类 - 参数
-
x
- 要转换的视图位置的x坐标> = 0 -
y
- 要转换的视图位置的y坐标> = 0 -
a
- 要分配的已分配区域 -
bias
-Position.Bias.Forward
或Position.Bias.Backward
- 结果
- 模型中最能代表视图中给定点的位置> = 0
- 另请参见:
-
View.viewToModel(float, float, java.awt.Shape, javax.swing.text.Position.Bias[])
-
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)
确定此视图沿轴的首选跨度。- Specified by:
-
getPreferredSpan
,类View
- 参数
-
axis
- 可以是View.X_AXIS
或View.Y_AXIS
- 结果
- 视图要渲染的范围> = 0; 通常视图被告知渲染到返回的范围内,尽管不能保证; 父母可以选择调整大小或破坏视图
- 异常
-
IllegalArgumentException
- 表示无效的轴类型 - 另请参见:
-
View.getPreferredSpan(int)
-
getMinimumSpan
public float getMinimumSpan(int axis)
确定此视图沿轴的最小跨度。- 重写:
-
getMinimumSpan
,类View
- 参数
-
axis
- 可以是View.X_AXIS
或View.Y_AXIS
- 结果
- 视图要渲染的范围> = 0; 通常视图被告知渲染到返回的范围内,尽管不能保证; 父母可以选择调整大小或破坏视图
- 异常
-
IllegalArgumentException
- 表示无效的轴类型 - 另请参见:
-
View.getPreferredSpan(int)
-
getMaximumSpan
public float getMaximumSpan(int axis)
确定此视图沿轴的最大跨度。- 重写:
-
getMaximumSpan
在类View
- 参数
-
axis
- 可能是View.X_AXIS
或View.Y_AXIS
- 结果
- 视图要渲染的范围> = 0; 通常视图被告知渲染到返回的范围内,尽管不能保证; 父母可以选择调整大小或破坏视图
- 异常
-
IllegalArgumentException
- 对于无效的轴类型 - 另请参见:
-
View.getPreferredSpan(int)
-
isAllocationValid
protected boolean isAllocationValid()
孩子的分配是否仍然有效?- 结果
- 如果分配仍然有效,则为true
-
isBefore
protected boolean isBefore(int x, int y, Rectangle innerAlloc)
确定点是否落在分配的区域之前。- Specified by:
-
isBefore
类CompositeView
- 参数
-
x
- X坐标> = 0 -
y
- Y坐标> = 0 -
innerAlloc
- 分配的区域; 这是内部区域 - 结果
- 如果该点位于该区域之前,则为true,否则为false
-
isAfter
protected boolean isAfter(int x, int y, Rectangle innerAlloc)
确定点是否落在分配的区域之后。- Specified by:
-
isAfter
类CompositeView
- 参数
-
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_AXIS
或View.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
是View
的,因此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
负责渲染position
和bias
的相同方法的值。 否则这将返回false。- 重写:
-
flipEastAndWestAtEnds
在类CompositeView
- 参数
-
position
- 进入模型的位置 -
bias
-Position.Bias.Forward
或Position.Bias.Backward
- 结果
- 如果真
View
周边安全的View
响应用于渲染position
和bias
按降序奠定了; 否则是假的
-
-