public class ZoneView extends BoxView
ZoneView扩展BoxView以提供一个框架,为其子代码实现区域。 这些区域是仅代表ZoneView实例负责的模型的一部分的特殊View实现(此类的实例的子项)。 在尝试显示它们之前,区域不会创建子视图。 盒子形状的视图非常适合这一点,因为:
默认行为由两个属性maxZoneSize和maxZonesLoaded控制。 将maxZoneSize设置为Integer.MAX_VALUE将产生仅导致一个区域的创建。 这将有效地将视图转变为装饰器图案的实现。 将maxZonesLaaded设置为Integer.MAX_VALUE的值将导致区域永远不会被卸载。 为了简单起见,在视图负责的元素的子元素表示的边界上创建区域。 区域可以是任何View实现,但默认实现基于AsyncBoxView,它有效地支持相当大的区域。
View
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 View |
createZone(int p0, int p1)
创建一个视图来表示模型中给定范围的区域(应该在该对象的责任范围内)。
|
int |
getMaximumZoneSize()
获取当前的最大区域大小。
|
int |
getMaxZonesLoaded()
获取允许同时加载的区域数的当前设置。
|
protected int |
getViewIndexAtPosition(int pos)
返回表示模型中给定位置的子视图索引。
|
void |
insertUpdate(DocumentEvent changes, Shape a, ViewFactory f)
在该视图负责的位置发出通知。
|
protected boolean |
isZoneLoaded(View zone)
确定区域是否处于加载状态。
|
protected void |
loadChildren(ViewFactory f)
加载所有的孩子以初始化视图。
|
void |
removeUpdate(DocumentEvent changes, Shape a, ViewFactory f)
在该视图负责的位置发出文档中已删除某些内容的通知。
|
void |
setMaximumZoneSize(int size)
设置所需的最大区域大小。
|
void |
setMaxZonesLoaded(int mzl)
设置允许同时加载的区域数量的当前设置。
|
protected void |
unloadZone(View zone)
卸载区域(将区域转换为其内存保存状态)。
|
protected boolean |
updateChildren(DocumentEvent.ElementChange ec, DocumentEvent e, ViewFactory f)
超类行为将尝试更新在这种情况下不希望的子视图,因为这些子节点是区域,而不是直接受关联元素的更改影响。
|
protected void |
zoneWasLoaded(View zone)
在加载时由区域调用。
|
baselineLayout, baselineRequirements, calculateMajorAxisRequirements, calculateMinorAxisRequirements, childAllocation, flipEastAndWestAtEnds, forwardUpdate, getAlignment, getAxis, getChildAllocation, getHeight, getMaximumSpan, getMinimumSpan, getOffset, getPreferredSpan, getResizeWeight, getSpan, getViewAtPoint, getWidth, isAfter, isAllocationValid, isBefore, isLayoutValid, layout, layoutChanged, layoutMajorAxis, layoutMinorAxis, modelToView, paint, paintChild, preferenceChanged, replace, setAxis, setSize, viewToModel
getBottomInset, getInsideAllocation, getLeftInset, getNextEastWestVisualPositionFrom, getNextNorthSouthVisualPositionFrom, getNextVisualPositionFrom, getRightInset, getTopInset, getView, getViewAtPosition, getViewCount, getViewIndex, modelToView, setInsets, setParagraphInsets, setParent
append, breakView, changedUpdate, createFragment, forwardUpdateToView, getAttributes, getBreakWeight, getContainer, getDocument, getElement, getEndOffset, getGraphics, getParent, getStartOffset, getToolTipText, getViewFactory, getViewIndex, insert, isVisible, modelToView, remove, removeAll, updateLayout, viewToModel
public ZoneView(Element elem, int axis)
elem
- 这个视图负责的元素
axis
- View.X_AXIS或View.Y_AXIS
public int getMaximumZoneSize()
public void setMaximumZoneSize(int size)
size
- 区域在尝试将区域分解成较小的大小之前可能表示的字符数。
public int getMaxZonesLoaded()
public void setMaxZonesLoaded(int mzl)
mzl
小于1,则会抛出IllegalArgumentException
。
mzl
- 要主动加载的所需最大区域数必须大于0
IllegalArgumentException
- 如果
mzl
<1
protected void zoneWasLoaded(View zone)
zone
- 刚加载的子视图。
protected void unloadZone(View zone)
zone
- 希望将子视图设置为卸载状态。
protected boolean isZoneLoaded(View zone)
protected View createZone(int p0, int p1)
p0
- 所需区域的开始。
这应该是> = getStartOffset()和<getEndOffset()。
此值也应为<p1。
p1
- 所需区域的结尾。
这应该是> getStartOffset()和<= getEndOffset()。
此值也应为> p0。
protected void loadChildren(ViewFactory f)
setParent
方法调用的。
这被重新实现为不直接加载任何孩子(因为它们是由区域创建的)。
此方法创建初始区域集。
然而,区域实际上并没有被填充,直到尝试显示它们或进行模型/视图坐标转换。
loadChildren
在
CompositeView
f
- 视图工厂
CompositeView.setParent(javax.swing.text.View)
protected int getViewIndexAtPosition(int pos)
getViewIndexAtPosition
在
CompositeView
pos
- 位置> = 0
protected boolean updateChildren(DocumentEvent.ElementChange ec, DocumentEvent e, ViewFactory f)
updateChildren
在
View
ec
- 该视图负责的元素的更改信息。
如果调用此方法, null
应该为null
e
- 相关文件的变更信息
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 insertUpdate(DocumentEvent changes, Shape a, ViewFactory f)
insertUpdate
在
View
changes
- 相关文件的变更信息
a
- 视图的当前分配
f
- 工厂用来重建如果视图有孩子
View.insertUpdate(javax.swing.event.DocumentEvent, java.awt.Shape, javax.swing.text.ViewFactory)
public void removeUpdate(DocumentEvent changes, Shape a, ViewFactory f)
removeUpdate
在
View
changes
- 相关文件的更改信息
a
- 视图的当前分配
f
- 工厂使用重建如果视图有孩子
View.removeUpdate(javax.swing.event.DocumentEvent, java.awt.Shape, javax.swing.text.ViewFactory)