JavaTM Platform
Standard Ed. 6

javax.swing.text
类 ZoneView

java.lang.Object
  继承者 javax.swing.text.View
      继承者 javax.swing.text.CompositeView
          继承者 javax.swing.text.BoxView
              继承者 javax.swing.text.ZoneView
所有已实现的接口:
SwingConstants

public class ZoneView
extends BoxView

ZoneView 是一个创建分区的 View 实现,该分区中在需要子视图来显示或进行模型/视图转换之前不会创建或存储子视图。在将要表示的模型很大的情况下,此类仅为将要主动地查看/编辑的区域构建视图对象,从而使其在内容消耗上有一个实质性的减少。可以通过某种途径估计子级的大小,或者仅利用保存的结果来异步计算。

ZoneView 扩展 BoxView 来为其子级提供一个实现分区的框。分区是特殊的 View 实现(此类的一个实例的子级),其仅表示一个 ZoneView 实例所负责的一部分模型。在尝试显示子视图之前,分区不创建子视图。一个框形的视图很合适,这是因为:

默认的行为由 maxZoneSize 和 maxZonesLoaded 两个属性来控制。将 maxZoneSize 设置为整数 Integer.MAX_VALUE 会导致仅创建一个分区。这将有效地将视图转换为装饰模式的一个实现。将 maxZonesLoaded 设置为 Integer.MAX_VALUE 整数值将导致分区永远不会被卸载。为简单起见,在由视图负责的元素的子元素所表示的边界上创建分区。分区可以是任何 View 实现,但是默认的实现以高效地支持极大分区的 AsyncBoxView 为基础。

从以下版本开始:
1.3
另请参见:
View

字段摘要
 
从类 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
 
构造方法摘要
ZoneView(Element elem, int axis)
          构造一个 ZoneView。
 
方法摘要
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)
          当加载某个分区后由该分区调用。
 
从类 javax.swing.text.BoxView 继承的方法
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
 
从类 javax.swing.text.CompositeView 继承的方法
getBottomInset, getInsideAllocation, getLeftInset, getNextEastWestVisualPositionFrom, getNextNorthSouthVisualPositionFrom, getNextVisualPositionFrom, getRightInset, getTopInset, getView, getViewAtPosition, getViewCount, getViewIndex, modelToView, setInsets, setParagraphInsets, setParent
 
从类 javax.swing.text.View 继承的方法
append, breakView, changedUpdate, createFragment, forwardUpdateToView, getAttributes, getBreakWeight, getContainer, getDocument, getElement, getEndOffset, getGraphics, getParent, getStartOffset, getToolTipText, getViewFactory, getViewIndex, insert, isVisible, modelToView, remove, removeAll, updateLayout, viewToModel
 
从类 java.lang.Object 继承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

构造方法详细信息

ZoneView

public ZoneView(Element elem,
                int axis)
构造一个 ZoneView。

参数:
elem - 此视图负责的元素
axis - View.X_AXIS 或者 View.Y_AXIS
方法详细信息

getMaximumZoneSize

public int getMaximumZoneSize()
获取当前最大的分区大小。


setMaximumZoneSize

public void setMaximumZoneSize(int size)
设置所需的最大分区大小。如果单个子视图大于此大小则分区也会大于此大小,因为分区是在子视图边界上形成的。

参数:
size - 在试图将分区拆分成更小的分区前,此分区能显示的字符数。

getMaxZonesLoaded

public int getMaxZonesLoaded()
获取当前设置的允许同时加载的分区数。


setMaxZonesLoaded

public void setMaxZonesLoaded(int mzl)
设置当前设置的允许同时加载的分区数。如果 mzl 小于 1,此方法将抛出 IllegalArgumentException

参数:
mzl - 能主动加载的所需最大分区数,必须大于 0
抛出:
IllegalArgumentException - 如果 mzl < 1

zoneWasLoaded

protected void zoneWasLoaded(View zone)
当加载某个分区后由该分区调用。这发生在试图在某个处于卸载状态的分区上显示或执行模型/视图转换的时候。实现此方法来检查是否已达到最大的分区数,如果达到则卸载存在最久的分区。

参数:
zone - 刚刚加载的子视图

unloadZone

protected void unloadZone(View zone)
卸载一个分区(将分区转换到其内存节省状态)。希望分区来表示此视图负责元素的子元素的一个子集。因此,默认的实现会移除所有子级。

参数:
zone - 需要设置成卸载状态的子视图。

isZoneLoaded

protected boolean isZoneLoaded(View zone)
确定某个分区是否处于加载状态。希望分区来表示此视图负责元素的子元素的一个子集。因此,默认的实现在视图存在子级时返回 true。


createZone

protected View createZone(int p0,
                          int p1)
针对模型中的给定范围(应该在此对象的职责范围内),创建一个视图来表示分区。由分区管理逻辑调用此方法来创建新分区。子类通过更改此方法来为分区提供不同的实现。

参数:
p0 - 所需分区的开始处。此参数应 >= getStartOffset() 且 < getEndOffset()。此值也应 < p1。
p1 - 所需分区的结尾。此参数应 > getStartOffset() 且 <= getEndOffset()。此值也应 > p0。

loadChildren

protected void loadChildren(ViewFactory f)
加载所有子级来初始化视图。此方法由 setParent 方法调用。实现此方法以不直接加载任何子级(因为它们由分区创建)。此方法创建了初始的分区集。但是在试图显示分区或执行模型/视图坐标转换之前,并不实际组装这些分区。

覆盖:
CompositeView 中的 loadChildren
参数:
f - 视图工厂
另请参见:
CompositeView.setParent(javax.swing.text.View)

getViewIndexAtPosition

protected int getViewIndexAtPosition(int pos)
返回表示模型中给定位置的子视图索引。

覆盖:
CompositeView 中的 getViewIndexAtPosition
参数:
pos - 位置,该值 >= 0
返回:
表示给定位置的视图索引,如果没有任何视图表示该位置,则返回 -1

updateChildren

protected boolean updateChildren(DocumentEvent.ElementChange ec,
                                 DocumentEvent e,
                                 ViewFactory f)
超类行为将试图更新子视图,而在这种情况下并不需要这样做,因为子级是分区并且不受关联元素变化的直接影响。重新实现此方法以不执行任何操作,并且返回 false。

覆盖:
View 中的 updateChildren
参数:
ec - 此视图所负责的元素的更改信息。如果调用此方法,该参赛不应当为 null
e - 来自关联文档的变化信息
f - 用于构建子视图的工厂
返回:
子视图是否表示此视图所负责的元素的子元素。某些视图创建表示其所负责的一部分元素的子级,其应当返回 false。此信息用于确定是否应该转发添加的元素范围中的视图
另请参见:
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)

insertUpdate

public void insertUpdate(DocumentEvent changes,
                         Shape a,
                         ViewFactory f)
给出在文档中此视图负责的位置插入了某些内容的通知。此方法一般委托给超类,但是可重新实现此方法来更新相关的分区(即确定某个分区是否需要拆分为 2 个或更多分区的集合)。

覆盖:
View 中的 insertUpdate
参数:
changes - 来自关联文档的更改信息
a - 视图的当前分配
f - 视图有子级时用于重建的工厂
另请参见:
View.insertUpdate(javax.swing.event.DocumentEvent, java.awt.Shape, javax.swing.text.ViewFactory)

removeUpdate

public void removeUpdate(DocumentEvent changes,
                         Shape a,
                         ViewFactory f)
给出从文档中此视图负责的位置移除了某些内容的通知。此方法一般委托给超类,但是可重新实现此方法来更新相关的分区(即确定分区是否需要被移除或跟其他分区合并)。

覆盖:
View 中的 removeUpdate
参数:
changes - 来自相关文档的更改信息
a - 视图的当前分配区域
f - 用于重建的工厂(如果该视图有子级)
另请参见:
View.removeUpdate(javax.swing.event.DocumentEvent, java.awt.Shape, javax.swing.text.ViewFactory)

JavaTM Platform
Standard Ed. 6

提交错误或意见
有关更多的 API 参考资料和开发人员文档,请参阅 Java SE 开发人员文档。该文档包含更详细的、面向开发人员的描述,以及总体概述、术语定义、使用技巧和工作代码示例。

版权所有 2007 Sun Microsystems, Inc. 保留所有权利。 请遵守许可证条款。另请参阅文档重新分发政策