java.lang.Object javax.swing.text.View javax.swing.text.CompositeView javax.swing.text.BoxView
public class BoxView
一个视图,它通过沿某轴平铺将其子级排列到框形状中。此框与 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 |
构造方法摘要 | |
---|---|
BoxView(Element elem, int axis) 构造一个 BoxView 。 |
方法摘要 | |
---|---|
protected void |
baselineLayout(int targetSpan, int axis, int[] offsets, int[] spans) 在给定的 targetSpan 区域,即我们将使用的区域的宽度(或高度),计算每个子视图在此 BoxView 中的位置和扩展。 |
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() 获取平铺轴属性。 |
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) 提供从视图坐标空间到模型逻辑坐标空间的映射。 |
从类 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 |
从类 java.lang.Object 继承的方法 |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
构造方法详细信息 |
---|
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)
CompositeView
中的
replace
index
- 要插入新视图的子视图的开始索引;其值 >= 0 且 <= getViewCount
length
- 要移除的现有子视图数;其值 >= 0 且 <= (getViewCount() - offset)
elems
- 要添加的子视图;此值可以为
null
,表示没有要添加的子级(对移除有用)
protected void forwardUpdate(DocumentEvent.ElementChange ec, DocumentEvent e, Shape a, ViewFactory f)
DocumentEvent
转发给需要接收模型更改通知的子视图。如果有一个子级更改了它的要求并且在转发前分配为有效,则框中从开始子级到框结束部分将被重新绘制。
View
中的
forwardUpdate
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)
View
中的
preferenceChanged
child
- 子视图
width
- 如果应更改宽度首选项,则为 true
height
- 如果应更改高度首选项,则为 true
JComponent.revalidate()
public int getResizeWeight(int axis)
View
中的
getResizeWeight
axis
- 可以是
View.X_AXIS
或
View.Y_AXIS
IllegalArgumentException
- 如果轴无效
public void setSize(float width, float height)
width
- 宽度 >= 0
height
- 高度 >= 0
public void paint(Graphics g, Shape allocation)
BoxView
。只呈现与给定
Graphics
边界相交的子级。
g
- 要使用的呈现面
allocation
- 要呈现的已分配区域
View.paint(java.awt.Graphics, java.awt.Shape)
public Shape getChildAllocation(int index, Shape a)
null
,否则执行超类行为。
CompositeView
中的
getChildAllocation
index
- 子级的索引,该索引 >= 0 && < getViewCount()
a
- 对此视图的分配
a
为
null
则返回
null
;如果布局无效,则返回
null
public Shape modelToView(int pos, Shape a, Position.Bias b) throws BadLocationException
CompositeView
中的
modelToView
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)
CompositeView
中的
viewToModel
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)
View
中的
getAlignment
axis
- 可以是
View.X_AXIS
或
View.Y_AXIS
IllegalArgumentException
- 如果轴无效
public float getPreferredSpan(int axis)
View
中的
getPreferredSpan
axis
- 可以为
View.X_AXIS
或
View.Y_AXIS
IllegalArgumentException
- 如果轴类型无效
View.getPreferredSpan(int)
public float getMinimumSpan(int axis)
View
中的
getMinimumSpan
axis
- 可以为
View.X_AXIS
或
View.Y_AXIS
IllegalArgumentException
- 如果轴类型无效
View.getPreferredSpan(int)
public float getMaximumSpan(int axis)
View
中的
getMaximumSpan
axis
- 可以为
View.X_AXIS
或
View.Y_AXIS
IllegalArgumentException
- 如果轴类型无效
View.getPreferredSpan(int)
protected boolean isAllocationValid()
protected boolean isBefore(int x, int y, Rectangle innerAlloc)
CompositeView
中的
isBefore
x
- X 坐标,该坐标 >= 0
y
- Y 坐标,该坐标 >= 0
innerAlloc
- 已分配区域;这是 insets 内部的区域
protected boolean isAfter(int x, int y, Rectangle innerAlloc)
CompositeView
中的
isAfter
x
- X 坐标,该坐标 >= 0
y
- Y 坐标,该坐标 >= 0
innerAlloc
- 已分配区域;这是 insets 内部的区域
protected View getViewAtPoint(int x, int y, Rectangle alloc)
CompositeView
中的
getViewAtPoint
x
- X 坐标,该坐标 >= 0
y
- Y 坐标,该坐标 >= 0
alloc
- 父级在入口处的内部分配,在出口处应将更改为子级的分配
protected void childAllocation(int index, Rectangle alloc)
CompositeView
中的
childAllocation
index
- 要为子视图分配的索引,该索引 >= 0 && < getViewCount()
alloc
- 分配的区域
protected void layout(int width, int height)
width
- insets 的内部宽度,该宽度 >= 0
height
- insets 的内部高度,该高度 >= 0
public int getWidth()