所有类


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。

微信小程序

微信扫一扫体验

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部