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_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 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, viewToModelgetBottomInset, getInsideAllocation, getLeftInset, getNextEastWestVisualPositionFrom, getNextNorthSouthVisualPositionFrom, getNextVisualPositionFrom, getRightInset, getTopInset, getView, getViewAtPosition, getViewCount, getViewIndex, modelToView, setInsets, setParagraphInsets, setParentappend, breakView, changedUpdate, createFragment, forwardUpdateToView, getAttributes, getBreakWeight, getContainer, getDocument, getElement, getEndOffset, getGraphics, getParent, getStartOffset, getToolTipText, getViewFactory, getViewIndex, insert, isVisible, modelToView, remove, removeAll, updateLayout, viewToModelpublic 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)
Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.