public class BoxView extends CompositeView
每个轴的布局由方法layoutMajorAxis和layoutMinorAxis 。 子类可以通过重新实现这些方法来改变布局算法。
这些方法将根据是否有高速缓存的布局信息和高速缓存被视为有效而被调用。
如果沿着轴的给定尺寸发生变化,或者如果layoutChanged来强制更新的布局,则layoutChanged会调用这些方法。
layoutChanged方法使缓存的布局信息无效,如果有的话。 发布到父视图的要求通过方法calculateMajorAxisRequirements和calculateMinorAxisRequirements 。
如果布局算法改变了,这些方法可能需要重新实现。
BadBreakWeight, ExcellentBreakWeight,
ForcedBreakWeight,
GoodBreakWeight,
X_AXIS, Y_AXISBOTTOM, 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;
否则为虚假