JavaTM 2 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 2 Platform
Standard Ed. 6

提交錯誤或意見

版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only