public class BoxView extends CompositeView
每个轴的布局由方法layoutMajorAxis
和layoutMinorAxis
。 子类可以通过重新实现这些方法来改变布局算法。 这些方法将根据是否有高速缓存的布局信息和高速缓存被视为有效而被调用。 如果沿着轴的给定尺寸发生变化,或者如果layoutChanged
来强制更新的布局,则layoutChanged
会调用这些方法。 layoutChanged
方法使缓存的布局信息无效,如果有的话。 发布到父视图的要求通过方法calculateMajorAxisRequirements
和calculateMinorAxisRequirements
。 如果布局算法改变了,这些方法可能需要重新实现。
BadBreakWeight, ExcellentBreakWeight, ForcedBreakWeight, GoodBreakWeight, X_AXIS, Y_AXIS
BOTTOM, CENTER, EAST, HORIZONTAL, LEADING, LEFT, NEXT, NORTH, NORTH_EAST, NORTH_WEST, PREVIOUS, RIGHT, SOUTH, SOUTH_EAST, SOUTH_WEST, TOP, TRAILING, VERTICAL, WEST
Modifier and Type | Method and Description |
---|---|
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的尺寸
axis 。
|
protected SizeRequirements |
calculateMinorAxisRequirements(int axis, SizeRequirements r)
计算短轴axis的尺寸
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()
获取瓦片轴属性。
|
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)
设置瓦片轴属性。
|
void |
setSize(float width, float height)
设置视图的大小。
|
int |
viewToModel(float x, float y, Shape a, Position.Bias[] bias)
提供从视图坐标空间到模型的逻辑坐标空间的映射。
|
getBottomInset, getInsideAllocation, getLeftInset, getNextEastWestVisualPositionFrom, getNextNorthSouthVisualPositionFrom, getNextVisualPositionFrom, getRightInset, getTopInset, getView, getViewAtPosition, getViewCount, getViewIndex, getViewIndexAtPosition, loadChildren, modelToView, setInsets, setParagraphInsets, setParent
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
public BoxView(Element elem, int axis)
BoxView
。
elem
- 这个视图负责的元素
axis
-
View.X_AXIS
或
View.Y_AXIS
public int getAxis()
View.X_AXIS
或
View.Y_AXIS
public void setAxis(int axis)
axis
-
View.X_AXIS
或
View.Y_AXIS
public void layoutChanged(int axis)
setSize
方法时(通常在绘图中)将更新布局。
axis
-
View.X_AXIS
或
View.Y_AXIS
protected boolean isLayoutValid(int axis)
axis
-
View.X_AXIS
或
View.Y_AXIS
protected void paintChild(Graphics g, Rectangle alloc, int index)
g
- 图形上下文
alloc
- 要分配的区域
index
- 子索引> = 0 && <getViewCount()
public void replace(int index, int length, View[] elems)
replace
在
CompositeView
index
- 启动索引到子视图中插入新视图;
这应该是一个值> = 0和<= getViewCount
length
- 要删除的现有子视图数;
这应该是一个值> = 0和<=(getViewCount() - offset)
elems
- 子视图添加;
这个值可以是null
来表示没有孩子被添加(有用的删除)
protected void forwardUpdate(DocumentEvent.ElementChange ec, DocumentEvent e, Shape a, ViewFactory f)
DocumentEvent
转发给需要通知模型更改的子视图。
如果孩子改变了要求,并且在转发盒子的一部分从开始的孩子到盒子的末尾之前分配是有效的将被重新绘制。
forwardUpdate
在
View
ec
- 对此视图负责的元素的更改(如果没有更改,可能是
null
)
e
- 相关文件的变更信息
a
- 视图的当前分配
f
- 工厂用来重建如果视图有孩子
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)
public void preferenceChanged(View child, boolean width, boolean height)
preferenceChanged
在
View
child
- 子视图
width
- 如果宽度偏好应该更改,则为true
height
- 如果高度偏好应该更改,则为true
JComponent.revalidate()
public int getResizeWeight(int axis)
getResizeWeight
在
View
axis
- 可能是
View.X_AXIS
或
View.Y_AXIS
IllegalArgumentException
- 针对无效轴
public void setSize(float width, float height)
public void paint(Graphics g, Shape allocation)
BoxView
。
只有与给定Graphics
的剪辑边界Graphics
才会呈现。
paint
在
View
g
- 要使用的渲染表面
allocation
- 要分配的区域
View.paint(java.awt.Graphics, java.awt.Shape)
public Shape getChildAllocation(int index, Shape a)
null
,否则执行超类行为。
getChildAllocation
在
CompositeView
index
- 小孩的索引> = 0 &&> getViewCount()
a
- 这个视图的分配
null
如果a
是null
;
或null
如果布局无效
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)
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
View.viewToModel(float, float, java.awt.Shape, javax.swing.text.Position.Bias[])
public float getAlignment(int axis)
getAlignment
在
View
axis
- 可能是
View.X_AXIS
或
View.Y_AXIS
IllegalArgumentException
- 对于无效轴
public float getPreferredSpan(int axis)
getPreferredSpan
在
View
axis
- 可以是
View.X_AXIS
或
View.Y_AXIS
IllegalArgumentException
- 对于无效的轴类型
View.getPreferredSpan(int)
public float getMinimumSpan(int axis)
getMinimumSpan
在
View
axis
- 可能是
View.X_AXIS
或
View.Y_AXIS
IllegalArgumentException
- 对于无效轴类型
View.getPreferredSpan(int)
public float getMaximumSpan(int axis)
getMaximumSpan
在
View
axis
- 可能是
View.X_AXIS
或
View.Y_AXIS
IllegalArgumentException
- 无效轴类型
View.getPreferredSpan(int)
protected boolean isAllocationValid()
protected boolean isBefore(int x, int y, Rectangle innerAlloc)
isBefore
在
CompositeView
x
- X坐标> = 0
y
- Y坐标> = 0
innerAlloc
- 分配区域;
这是插图内的区域
protected boolean isAfter(int x, int y, Rectangle innerAlloc)
isAfter
在
CompositeView
x
- X坐标> = 0
y
- Y坐标> = 0
innerAlloc
- 分配区域;
这是插图内的区域
protected View getViewAtPoint(int x, int y, Rectangle alloc)
getViewAtPoint
在
CompositeView
类
x
- X坐标> = 0
y
- Y坐标> = 0
alloc
- 父母在入境时的内部分配,应在退出时更改为小孩的分配
protected void childAllocation(int index, Rectangle alloc)
childAllocation
在
CompositeView
index
- 要分配的子视图的索引,> = 0 && <getViewCount()
alloc
- 分配区域
protected void layout(int width, int height)
width
- 宽度(内插)> = 0
height
- 高度(内插)> = 0
public int getWidth()
public int getHeight()
protected void layoutMajorAxis(int targetSpan, int axis, int[] offsets, int[] spans)
targetSpan
- 给予视图的总跨度,用于布局孩子
axis
- 轴被
axis
offsets
- 每个儿童视图的视图起源的偏移量;
这是一个返回值并通过执行此方法填写
spans
- 每个子视图的跨度;
这是一个返回值并通过执行此方法填写
protected void layoutMinorAxis(int targetSpan, int axis, int[] offsets, int[] spans)
targetSpan
- 给予视图的总跨度,用于布局孩子
axis
- 轴被
axis
offsets
- 每个子视图的视图起源的偏移量;
这是一个返回值并通过执行此方法填写
spans
- 每个子视图的跨度;
这是一个返回值并通过执行此方法填写
protected SizeRequirements calculateMajorAxisRequirements(int axis, SizeRequirements r)
axis
。
axis
- 正在研究的轴
r
- SizeRequirements
对象;
如果null
将创建一个
SizeRequirements
对象
SizeRequirements
protected SizeRequirements calculateMinorAxisRequirements(int axis, SizeRequirements r)
axis
。
axis
- 正在研究的轴
r
- SizeRequirements
对象;
如果null
将创建一个
SizeRequirements
对象
SizeRequirements
protected void baselineLayout(int targetSpan, int axis, int[] offsets, int[] spans)
BoxView
给出的
targetSpan
,这是我们必须一起工作的区域的宽度(或高度)。
targetSpan
- 赋予视图的总跨度,用于布局孩子
axis
- 正在研究的轴,
View.X_AXIS
或
View.Y_AXIS
offsets
- 这个方法填充的一个空数组,其值指定每个子视图的位置
spans
- 这个方法填充的一个空数组,其值指定每个子视图的范围
protected SizeRequirements baselineRequirements(int axis, SizeRequirements r)
BoxView
的大小要求。
axis
- 正在研究的轴
r
- SizeRequirements
对象;
如果null
将创建一个
SizeRequirements
对象
protected int getOffset(int axis, int childIndex)
axis
- 正在研究的轴
childIndex
- 请求的孩子的索引
protected int getSpan(int axis, int childIndex)
axis
- 正在研究的轴
childIndex
- 请求的孩子的索引
protected boolean flipEastAndWestAtEnds(int position, Position.Bias bias)
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
以降序排列,则为true;
否则为虚假