JavaTM 2 Platform
Standard Ed. 6

javax.swing.text
類別 AsyncBoxView

java.lang.Object
  繼承者 javax.swing.text.View
      繼承者 javax.swing.text.AsyncBoxView
所有已實作的介面:
SwingConstants

public class AsyncBoxView
extends View

非同步執行佈局處理的框。此類別很有用,因為它可通過不在 GUI 事件執行緒中執行任何佈局處理來保持該執行緒的持續活動。佈局是在子視圖的操作粒度上完成的。存取某部分佈局的每個子視圖後(可能是耗時的操作),可放棄剩餘的任務,或者可執行新的、具有更高優先級的任務(如回應一個同步請求或對一個可見區域進行操作)。

存取子視圖的同時,要獲得關聯文檔上的讀取鎖定,這樣該模型在被存取時是穩定的。

從以下版本開始:
1.3

巢狀類別摘要
 class AsyncBoxView.ChildLocator
          該類別在本地化區域發生更改時,管理該本地化區域中子視圖的有效位置。
 class AsyncBoxView.ChildState
          表示子視圖佈局狀態的記錄。
 
欄位摘要
protected  AsyncBoxView.ChildLocator locator
          這是管理子視圖偏移量的物件。
 
從類別 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
 
建構子摘要
AsyncBoxView(Element elem, int axis)
          建構執行非同步佈局處理的 BoxView。
 
方法摘要
protected  AsyncBoxView.ChildState createChildState(View v)
          通過此方法創建新的 ChildState 記錄,以允許擴展 ChildState 記錄的子類別執行/保存更多狀態。
protected  void flushRequirementChanges()
          將首選項中的更改向上發佈到父視圖。
 float getBottomInset()
          獲得視圖四周底部的空白部分。
 Shape getChildAllocation(int index, Shape a)
          獲取給定子視圖的分派區域。
protected  AsyncBoxView.ChildState getChildState(int index)
          獲取物件,該物件表示在給定索引位置的子視圖的佈局狀態。
protected  boolean getEstimatedMajorSpan()
          主跨距當前是估計值嗎?
protected  float getInsetSpan(int axis)
          獲取 insets 所佔據的沿某個軸的跨距。
protected  LayoutQueue getLayoutQueue()
          獲取用於佈局處理的佇列。
 float getLeftInset()
          獲得視圖四周左側的空白部分。
 int getMajorAxis()
          獲取主軸(即子級平鋪時沿用的軸)。
 float getMaximumSpan(int axis)
          確定此視圖沿某軸的最大跨距。
 float getMinimumSpan(int axis)
          確定此視圖沿某軸的最小跨距。
 int getMinorAxis()
          獲取輔軸(與平鋪軸垂直的軸)。
 int getNextVisualPositionFrom(int pos, Position.Bias b, Shape a, int direction, Position.Bias[] biasRet)
          提供確定下一個以可視化形式表示的模型位置的方法,使用者可以在此位置放置一個插入符。
 float getPreferredSpan(int axis)
          確定此視圖沿某軸的首選跨距。
 float getRightInset()
          獲得視圖四周右側的空白部分。
 float getTopInset()
          獲得視圖四周頂部的空白部分。
 View getView(int n)
          獲得第 n 個子視圖。
 int getViewCount()
          返回此視圖中的視圖數。
 int getViewIndex(int pos, Position.Bias b)
          返回該模型中表示給定位置的子視圖索引。
protected  int getViewIndexAtPosition(int pos, Position.Bias b)
          獲取此模型中表示給定位置的子視圖索引。
protected  void loadChildren(ViewFactory f)
          載入初始化該視圖的所有子級。
protected  void majorRequirementChange(AsyncBoxView.ChildState cs, float delta)
          沿主軸上的要求更改。
protected  void minorRequirementChange(AsyncBoxView.ChildState cs)
          沿輔軸上的要求更改。
 Shape modelToView(int pos, Shape a, Position.Bias b)
          提供從文檔模型坐標空間到所映射的視圖坐標空間的映射。
 void paint(Graphics g, Shape alloc)
          使用給定的分派和呈現表面呈現該視圖。
 void preferenceChanged(View child, boolean width, boolean height)
          子視圖可以在父級上調用此方法,以指示首選項已更改並且應該重新考慮佈局。
 void replace(int offset, int length, View[] views)
          調用父級類別以更新子視圖,並且更新子視圖的狀態記錄。
 void setBottomInset(float i)
          設置視圖四周底部的空白部分。
protected  void setEstimatedMajorSpan(boolean isEstimated)
          設置 estimatedMajorSpan 屬性,它確定是否應該將主跨距視為估計值。
 void setLeftInset(float i)
          設置視圖四周左側的空白部分。
 void setParent(View parent)
          設置視圖的父級。
 void setRightInset(float i)
          設置視圖四周右側的空白部分。
 void setSize(float width, float height)
          設置視圖的大小。
 void setTopInset(float i)
          設置視圖四周頂部的空白部分。
protected  void updateLayout(DocumentEvent.ElementChange ec, DocumentEvent e, Shape a)
          更新佈局,以回應從模型接收的更改通知。
 int viewToModel(float x, float y, Shape a, Position.Bias[] biasReturn)
          提供從視圖坐標空間到模型邏輯坐標空間的映射。
 
從類別 javax.swing.text.View 繼承的方法
append, breakView, changedUpdate, createFragment, forwardUpdate, forwardUpdateToView, getAlignment, getAttributes, getBreakWeight, getContainer, getDocument, getElement, getEndOffset, getGraphics, getParent, getResizeWeight, getStartOffset, getToolTipText, getViewFactory, getViewIndex, insert, insertUpdate, isVisible, modelToView, modelToView, remove, removeAll, removeUpdate, updateChildren, viewToModel
 
從類別 java.lang.Object 繼承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

欄位詳細資訊

locator

protected AsyncBoxView.ChildLocator locator
這是管理子視圖偏移量的物件。用於管理子視圖位置的所有鎖定都位於此物件上。

建構子詳細資訊

AsyncBoxView

public AsyncBoxView(Element elem,
                    int axis)
建構執行非同步佈局處理的 BoxView。

參數:
elem - 要表示的模型元素
axis - 平鋪時沿用的軸。這可以是 X_AXIS 或 Y_AXIS 之一。
方法詳細資訊

getMajorAxis

public int getMajorAxis()
獲取主軸(即子級平鋪時沿用的軸)。這將是 X_AXIS 或 Y_AXIS 值之一。


getMinorAxis

public int getMinorAxis()
獲取輔軸(與平鋪軸垂直的軸)。這將是 X_AXIS 或 Y_AXIS 值之一。


getTopInset

public float getTopInset()
獲得視圖四周頂部的空白部分。


setTopInset

public void setTopInset(float i)
設置視圖四周頂部的空白部分。

參數:
i - inset 值

getBottomInset

public float getBottomInset()
獲得視圖四周底部的空白部分。


setBottomInset

public void setBottomInset(float i)
設置視圖四周底部的空白部分。

參數:
i - inset 值

getLeftInset

public float getLeftInset()
獲得視圖四周左側的空白部分。


setLeftInset

public void setLeftInset(float i)
設置視圖四周左側的空白部分。

參數:
i - inset 值

getRightInset

public float getRightInset()
獲得視圖四周右側的空白部分。


setRightInset

public void setRightInset(float i)
設置視圖四周右側的空白部分。

參數:
i - inset 值

getInsetSpan

protected float getInsetSpan(int axis)
獲取 insets 所佔據的沿某個軸的跨距。

參數:
axis - 確定總的 insets 所沿用的軸,為 X_AXIS 或 Y_AXIS 之一。
從以下版本開始:
1.4

setEstimatedMajorSpan

protected void setEstimatedMajorSpan(boolean isEstimated)
設置 estimatedMajorSpan 屬性,它確定是否應該將主跨距視為估計值。如果此屬性為 true,則沿主軸方向的 setSize 值將更改沿主軸方向的要求,並且在更新所有子級之前(更新子級會導致自動將該屬性設置為 false)忽略遞增量。如果該屬性為 false,則認為 majorSpan 的值是準確的,並且在計算時將遞增量添加到總值中。

從以下版本開始:
1.4

getEstimatedMajorSpan

protected boolean getEstimatedMajorSpan()
主跨距當前是估計值嗎?

從以下版本開始:
1.4

getChildState

protected AsyncBoxView.ChildState getChildState(int index)
獲取物件,該物件表示在給定索引位置的子視圖的佈局狀態。

參數:
index - 子視圖索引。這應該是一個 >= 0 且 < getViewCount() 的值。

getLayoutQueue

protected LayoutQueue getLayoutQueue()
獲取用於佈局處理的佇列。


createChildState

protected AsyncBoxView.ChildState createChildState(View v)
通過此方法創建新的 ChildState 記錄,以允許擴展 ChildState 記錄的子類別執行/保存更多狀態。


majorRequirementChange

protected void majorRequirementChange(AsyncBoxView.ChildState cs,
                                      float delta)
沿主軸上的要求更改。當執行佈局處理的執行緒完成獲取子視圖新首選項的任務後,由該執行緒為給定的 ChildState 物件調用此方法。通常這是佈局執行緒,但是如果要嘗試立即更新某些內容(例如執行模型/視圖轉換),則它也可能是事件執行緒。

實作此方法以便將主軸標記為已更改,所以如果需要將要求發佈到父視圖,後續的檢查可查看是否將主軸考慮在內。如果沿主軸的跨距不是估計值,則通過給定的 delta 更新它,以反映遞增量。如果主跨距是估計值,則忽略 delta。


minorRequirementChange

protected void minorRequirementChange(AsyncBoxView.ChildState cs)
沿輔軸上的要求更改。當執行佈局處理的執行緒完成獲取子視圖新首選項的任務後,由該執行緒為給定的 ChildState 物件調用此方法。通常這是佈局執行緒,但是如果要嘗試立即更新某些內容(例如執行模型/視圖轉換),則它也可能是 GUI 執行緒。


flushRequirementChanges

protected void flushRequirementChanges()
將首選項中的更改向上發佈到父視圖。它通常由佈局執行緒調用。


replace

public void replace(int offset,
                    int length,
                    View[] views)
調用父級類別以更新子視圖,並且更新子視圖的狀態記錄。應該在模型持有寫入鎖定的同時調用此方法,這樣將不會發生與佈局執行緒的交互(例如,佈局執行緒獲得讀取鎖定後才能執行任何操作)。

覆寫:
類別 View 中的 replace
參數:
offset - 子視圖中的起始偏移量,該值 >= 0
length - 要替換的現有視圖數,該值 >= 0
views - 要插入的子視圖

loadChildren

protected void loadChildren(ViewFactory f)
載入初始化該視圖的所有子級。此方法由 setParent 方法調用。子類別可重新實作此方法,從而以不同的方式初始化其子視圖。預設的實作為每個子元素創建一個子視圖。

通常在更改子元素時 Document 上會持有寫入鎖定,這可保持呈現和佈局執行緒的安全。例外情況是初始化視圖以表示現有的元素時(通過此方法),所以在進行初始化的時候它是同步的,以將 preferenceChanged 排除在外。

參數:
f - 視圖處理器
另請參見:
setParent(javax.swing.text.View)

getViewIndexAtPosition

protected int getViewIndexAtPosition(int pos,
                                     Position.Bias b)
獲取此模型中表示給定位置的子視圖索引。在每個子元素都有一個子視圖的情況下,實作此方法可獲取該視圖。

參數:
pos - 位置,該值 >= 0
返回:
表示給定位置的視圖的索引,如果沒有視圖表示該位置,則返回 -1

updateLayout

protected void updateLayout(DocumentEvent.ElementChange ec,
                            DocumentEvent e,
                            Shape a)
更新佈局,以回應從模型接收的更改通知。實作此方法可記錄 ChildLocator 上的更改,這樣可正確地計算子級的偏移量。

覆寫:
類別 View 中的 updateLayout
參數:
ec - 對此視圖所負責的元素的更改(如果沒有更改則可能為 null)。
e - 來自相關文檔的更改資訊
a - 該視圖的當前分派區域
另請參見:
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)

setParent

public void setParent(View parent)
設置視圖的父級。如果此視圖沒有子級,則可重新實作此方法以提供父級類別行為並調用 loadChildren 方法。子級不應在建構子中載入,因為設置父級的操作可能會導致其嘗試向上搜尋層次結構(例如獲得宿主 Container)。如果此視圖具有子視圖(將該視圖從視圖層次結構中的一個位置移到另一個位置),則不調用 loadChildren 方法。

覆寫:
類別 View 中的 setParent
參數:
parent - 視圖的父級,如果沒有,則為 null

preferenceChanged

public void preferenceChanged(View child,
                              boolean width,
                              boolean height)
子視圖可以在父級上調用此方法,以指示首選項已更改並且應該重新考慮佈局。重新實作此方法可在佈局執行緒上對新工作進行排隊。此方法通過子視圖獲得來自多個執行緒的訊息。

覆寫:
類別 View 中的 preferenceChanged
參數:
child - 子視圖
width - 如果已更改寬度首選項,則為 true
height - 如果已更改高度首選項,則為 true
另請參見:
JComponent.revalidate()

setSize

public void setSize(float width,
                    float height)
設置視圖的大小。如果該視圖快取記憶體了任何佈局資訊,則此操作會導致視圖進行佈局處理。

由於主軸是非同步更新的,並且應該是已平鋪子級的和,所以對於主軸應忽略該調用。由於輔軸是很靈活的,所以如果輔跨距更改了,則將工作放入佇列以調整子視圖的大小。

覆寫:
類別 View 中的 setSize
參數:
width - 寬度,該值 >= 0
height - 高度,該值 >= 0

paint

public void paint(Graphics g,
                  Shape alloc)
使用給定的分派和呈現表面呈現該視圖。

實作此方法可確定要呈現的所需區域(如非剪貼區域)是否為最新的。如果是最新的,則呈現子視圖。如果不是最新的,則將建構所需區域的任務作為最高優先級的任務放入佈局佇列中。在準備就緒時,此方法通過事件執行緒和渲染來持續運行,在尚未準備就緒時推遲一段時間(因為可以重新安排繪製請求)。

指定者:
類別 View 中的 paint
參數:
g - 要使用的呈現表面
alloc - 要在其中進行呈現的已分派區域
另請參見:
View.paint(java.awt.Graphics, java.awt.Shape)

getPreferredSpan

public float getPreferredSpan(int axis)
確定此視圖沿某軸的首選跨距。

指定者:
類別 View 中的 getPreferredSpan
參數:
axis - 可以為 View.X_AXIS 或 View.Y_AXIS
返回:
視圖可能要在其中呈現的跨距,該值 >= 0。通常會通知該視圖呈現到返回的跨距中,但並不能保證。父級可選擇重新調整視圖大小或分解視圖。
拋出:
IllegalArgumentException - 如果軸型別無效
另請參見:
View.getPreferredSpan(int)

getMinimumSpan

public float getMinimumSpan(int axis)
確定此視圖沿某軸的最小跨距。

覆寫:
類別 View 中的 getMinimumSpan
參數:
axis - 可以為 View.X_AXIS 或 View.Y_AXIS
返回:
視圖可能要在其中呈現的跨距,該值 >= 0。通常會通知該視圖呈現到返回的跨距中,但並不能保證。父級可選擇重新調整視圖大小或拆分視圖。
拋出:
IllegalArgumentException - 如果軸型別無效
另請參見:
View.getPreferredSpan(int)

getMaximumSpan

public float getMaximumSpan(int axis)
確定此視圖沿某軸的最大跨距。

覆寫:
類別 View 中的 getMaximumSpan
參數:
axis - 可以為 View.X_AXIS 或 View.Y_AXIS
返回:
視圖可能要在其中呈現的跨距,該值 >= 0。通常會通知該視圖呈現到返回的跨距中,但並不能保證。父級可選擇重新調整視圖大小或拆分視圖。
拋出:
IllegalArgumentException - 如果軸型別無效
另請參見:
View.getPreferredSpan(int)

getViewCount

public int getViewCount()
返回此視圖中的視圖數。由於預設不應是復合視圖,因此此方法返回 0。

覆寫:
類別 View 中的 getViewCount
返回:
視圖數,該值 >= 0
另請參見:
View.getViewCount()

getView

public View getView(int n)
獲得第 n 個子視圖。由於預設沒有子視圖,所以此方法返回 null。

覆寫:
類別 View 中的 getView
參數:
n - 要獲得的視圖編號,該值 >= 0 && < getViewCount()
返回:
視圖

getChildAllocation

public Shape getChildAllocation(int index,
                                Shape a)
獲取給定子視圖的分派區域。這就允許找出各種視圖的位置,而無需假定視圖存儲其位置。由於預設沒有任何子視圖,所以此方法返回 null。

覆寫:
類別 View 中的 getChildAllocation
參數:
index - 子視圖的索引,該值 >= 0 && < getViewCount()
a - 此視圖的分派區域。
返回:
子視圖的分派區域

getViewIndex

public int getViewIndex(int pos,
                        Position.Bias b)
返回該模型中表示給定位置的子視圖索引。預設情況下視圖沒有子視圖,所以此方法的實作返回 -1,以指示任何位置都沒有有效的子視圖索引。

覆寫:
類別 View 中的 getViewIndex
參數:
pos - 位置,該值 >= 0
返回:
表示給定位置的視圖的索引,如果沒有視圖表示該位置,則返回 -1
從以下版本開始:
1.3

modelToView

public Shape modelToView(int pos,
                         Shape a,
                         Position.Bias b)
                  throws BadLocationException
提供從文檔模型坐標空間到所映射的視圖坐標空間的映射。

指定者:
類別 View 中的 modelToView
參數:
pos - 要轉換的位置,該值 >= 0
a - 要呈現於其中的已分派區域
b - 在該位置是兩個視圖的邊界時,為偏向前一個字元或下一個字元的偏差,由偏移量表示。
返回:
返回給定位置的邊界框
拋出:
BadLocationException - 如果給定的位置不表示關聯文檔內的有效位置
IllegalArgumentException - 如果 bias 參數無效
另請參見:
View.viewToModel(float, float, java.awt.Shape, javax.swing.text.Position.Bias[])

viewToModel

public int viewToModel(float x,
                       float y,
                       Shape a,
                       Position.Bias[] biasReturn)
提供從視圖坐標空間到模型邏輯坐標空間的映射。填入 biasReturn 參數可指示給定的點是靠近模型中的下一個字元還是模型中的前一個字元。

預計由 GUI 執行緒調用此方法,在關聯的模型上保持讀取鎖定。實作此方法可定位子視圖,並通過對 ChildLocator 物件執行鎖定來確定其分派,以及通過對 ChildLocator 物件執行鎖定對子視圖調用 viewToModel,以避免與佈局執行緒相互干擾。

指定者:
類別 View 中的 viewToModel
參數:
x - X 坐標,該值 >= 0
y - Y 坐標,該值 >= 0
a - 要在其中進行呈現的已分派區域
返回:
模型中的位置,它可最佳地表示視圖中的給定點,該值 >= 0。填入 biasReturn 參數可指示給定的點是靠近模型中的下一個字元還是模型中的前一個字元。

getNextVisualPositionFrom

public int getNextVisualPositionFrom(int pos,
                                     Position.Bias b,
                                     Shape a,
                                     int direction,
                                     Position.Bias[] biasRet)
                              throws BadLocationException
提供確定下一個以可視化形式表示的模型位置的方法,使用者可以在此位置放置一個插入符。有些視圖可能是不可見的,它們的順序可能與模型中的順序不同,或者它們可能不允許存取模型中的某些位置。

覆寫:
類別 View 中的 getNextVisualPositionFrom
參數:
pos - 要轉換的位置,該值 >= 0
a - 要在其中進行呈現的已分派區域
direction - 從當前位置開始的方向,可以將它們設想為通常可在鍵盤上找到的箭頭鍵;可為下列值:
    SwingConstants.WEST SwingConstants.EAST SwingConstants.NORTH SwingConstants.SOUTH
biasRet - 套件含要檢查的偏差的陣列
返回:
模型中的位置,它可最佳地以可視化定位方式表示視圖中的下一個位置
拋出:
BadLocationException
IllegalArgumentException - 如果 direction 無效

JavaTM 2 Platform
Standard Ed. 6

提交錯誤或意見

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