JavaTM 2 Platform
Standard Ed. 6

javax.swing.text
類別 View

java.lang.Object
  繼承者 javax.swing.text.View
所有已實作的介面:
SwingConstants
直接已知子類別:
AsyncBoxView, ComponentView, CompositeView, GlyphView, IconView, ImageView, PlainView

public abstract class View
extends Object
implements SwingConstants

View 類別是 text 套件極為重要的一部分。顧名思義,其表示文本模型的一個視圖或者文本模型的一部分。負責文本元件外觀的正是此類別。View 無意成為使用者必須學習的全新內容,相反其更像是一個輕量級元件。

在預設情況下,視圖是很輕量的。它包含一個對父視圖的參考,由此能獲取許多內容而無需保持狀態,它還包含一個對模型 (Element) 某部分的參考。視圖無需精確地表示模型中的元素,而只是使用一個典型而便利的映射。視圖可以選擇性地維護一對 Position 物件,從而維護其在模型中的位置(即表示一個元素段)。這通常是將視圖拆分為片的格式化的結果。與元素堅固聯繫的便利之處在於使其更容易地建構處理器來產生視圖,還能使其在模型更改時更容易地追蹤視圖片,並且視圖一定會更改視圖來反映該模型。因此,簡單的視圖直接表示一個 Element,而複雜的視圖並不如此。

視圖具有以下責任:

參與佈局。

視圖有一個 setSize 方法,該方法如同 Component 中的 doLayoutsetSize 組合而成。視圖有一個 preferenceChanged 方法,該方法與 Component 中的 invalidate 類似,但該方法可以僅使一個軸無效並標識請求更改的子級。

View 根據三個值(即最小跨距、首選跨距、最大跨距)來表示其所需的大小。視圖中的佈局可以在獨立於每一個軸來完成。對於一個運行正常的 View 實作,將滿足:最小跨距 <= 首選跨距 <= 最大跨距。

以上文本是對此圖像的描述。

佈局最小值的設置方法有:

方法 setSize 應當準備好被多次調用(即使在大小沒有更改時也可能調用此方法)。通常調用 setSize 方法來確保試圖在視圖上執行需要更新佈局的操作之前,已經完成了 View 佈局。應該始終 將視圖的大小設置為該視圖所指定的最小跨距和最大跨距之間的某個值。此外,如果視圖已經更改了其需要的佈局值,並且希望其父級遵守該值,則必須一直在其父級上調用 preferenceChanged 方法。在發送了 preferenceChanged 之前,父 View 無需識別更改。如果需要的話,此類別允許父 View 實作快取記憶體子級的需求。調用序列如下所示:

父視圖和子視圖間的範例調用序列: 
       setSize, getMinimum, getPreferred, getMaximum, getAlignment, setSize

確切的調用序列取決於父視圖的佈局功能(如果該視圖具有任何子級)。在決定提供給每個子級的內容之前,視圖可能收集子級的優先權,或者其可能一次一個地迭代更新子級。

呈現模型的一部分。

這在 paint 方法中完成,該方法與元件的 paint 方法非常類似。期望 View 潛在地組裝一個相當大的階層樹。對於呈現,View 具有如下語義:

用於呈現的方法有:

在模型和視圖坐標系統間轉換。

因為視圖物件產生自一個處理器,因而不能指望其必然處於某個特定模型,所以使用者必須要能夠執行轉換以恰當地定位模型的空間表示形式。執行此操作的方法有:

在嘗試進行轉換之前佈局必須有效。當通過 DocumentEvent 從模型廣播更改時,轉換無效並且禁止嘗試。

回應模型的更改。

如果總體視圖由多片(如果希望更改視圖並寫入最小數量的新程式碼,這是最佳的情形)表示,而具有大量的 DocumentListener 是不現實的。如果每個視圖都偵聽模型,在任意給定的時間上,僅有少數視圖可能對所廣播的更改實際感興趣。因為模型不瞭解視圖,所以沒有方法來過濾更改資訊的廣播。視圖層次結構本身就代為負責傳播更改資訊。在視圖層次結構的任何一層上,視圖都足夠瞭解其子級,從而能最佳地進一步分發更改資訊。因此,更改從視圖層次結構的根開始廣播。執行此操作的方法有:


欄位摘要
static int BadBreakWeight
          該權重指示對於格式化來說視圖未處於拆分的好時機。
static int ExcellentBreakWeight
          該權重指示視圖支持拆分,並且表示拆分的極好時機。
static int ForcedBreakWeight
          該權重指示視圖支持拆分,並且在被置入一個通過拆分其子級來格式化子級的視圖時,必須拆分該視圖以恰當的表示它。
static int GoodBreakWeight
          該權重指示視圖支持拆分,但是可能存在更好時機。
static int X_AXIS
          用於格式化/拆分操作的軸。
static int 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
 
建構子摘要
View(Element elem)
          創建一個新的 View 物件。
 
方法摘要
 void append(View v)
          追加單個子視圖。
 View breakView(int axis, int offset, float pos, float len)
          試圖在給定的軸上拆分視圖。
 void changedUpdate(DocumentEvent e, Shape a, ViewFactory f)
          發出通知,通知文檔此視圖負責的位置處的屬性已更改。
 View createFragment(int p0, int p1)
          創建一個表示元素某部分的視圖。
protected  void forwardUpdate(DocumentEvent.ElementChange ec, DocumentEvent e, Shape a, ViewFactory f)
          將給定的 DocumentEvent 轉發給需要被通知模型更改的子視圖。
protected  void forwardUpdateToView(View v, DocumentEvent e, Shape a, ViewFactory f)
          將 DocumentEvent 轉發到給定的子視圖。
 float getAlignment(int axis)
          確定此視圖沿某個軸所需的對齊方式。
 AttributeSet getAttributes()
          獲取呈現時要使用的屬性。
 int getBreakWeight(int axis, float pos, float len)
          確定此視圖中拆分時機的權重大小。
 Shape getChildAllocation(int index, Shape a)
          獲取給定子視圖的分派。
 Container getContainer()
          獲取承載視圖的容器。
 Document getDocument()
          獲取與視圖關聯的模型。
 Element getElement()
          獲取此視圖所映射的主題的結構化部分。
 int getEndOffset()
          獲取此視圖負責的模型的一部分。
 Graphics getGraphics()
          獲取用於呈現的 Graphics
 float getMaximumSpan(int axis)
          確定此視圖沿某個軸的最大跨距。
 float getMinimumSpan(int axis)
          確定此視圖沿某個軸的最小跨距。
 int getNextVisualPositionFrom(int pos, Position.Bias b, Shape a, int direction, Position.Bias[] biasRet)
          提供某種途徑來確定可以放置一個插入符的下一個可視表示模型位置。
 View getParent()
          返回視圖的父級。
abstract  float getPreferredSpan(int axis)
          確定此視圖沿某個軸的首選跨距。
 int getResizeWeight(int axis)
          確定視圖沿給定軸的大小可調整性。
 int getStartOffset()
          獲取此視圖負責的模型的一部分。
 String getToolTipText(float x, float y, Shape allocation)
          返回提定位置的工具提示文本。
 View getView(int n)
          獲取第 n 個子視圖。
 int getViewCount()
          返回此視圖中的視圖數。
 ViewFactory getViewFactory()
          獲取將提供給視圖層次結構的 ViewFactory 實作。
 int getViewIndex(float x, float y, Shape allocation)
          返回表示視圖中給定位置的子視圖索引。
 int getViewIndex(int pos, Position.Bias b)
          返回表示模型中給定位置的子視圖索引。
 void insert(int offs, View v)
          插入單個子視圖。
 void insertUpdate(DocumentEvent e, Shape a, ViewFactory f)
          發出通知,通知在文檔中此視圖負責的某個位置已插入內容。
 boolean isVisible()
          返回一個指示視圖是否可視的 boolean 值。
 Shape modelToView(int p0, Position.Bias b0, int p1, Position.Bias b1, Shape a)
          為給定區域提供從文檔模型坐標空間到視圖坐標空間的映射。
 Shape modelToView(int pos, Shape a)
          已過時。  
abstract  Shape modelToView(int pos, Shape a, Position.Bias b)
          為給定字元提供從文檔模型坐標空間到視圖坐標空間的映射。
abstract  void paint(Graphics g, Shape allocation)
          使用給定的呈現表面和該表面上的區域來呈現。
 void preferenceChanged(View child, boolean width, boolean height)
          子視圖能在父級上調用此方法來指示首選項已經更改,並且應該重新考慮佈局。
 void remove(int i)
          移除給定位置處的一個子級。
 void removeAll()
          移除所有子級。
 void removeUpdate(DocumentEvent e, Shape a, ViewFactory f)
          給出從文檔中此視圖負責的位置移除了某些內容的通知。
 void replace(int offset, int length, View[] views)
          替代子視圖。
 void setParent(View parent)
          為此視圖建立父視圖。
 void setSize(float width, float height)
          設置視圖的大小。
protected  boolean updateChildren(DocumentEvent.ElementChange ec, DocumentEvent e, ViewFactory f)
          更新子視圖以回應接收模型變化的通知,並且有一條此視圖負責的元素的變化記錄。
protected  void updateLayout(DocumentEvent.ElementChange ec, DocumentEvent e, Shape a)
          更新佈局,以回應從模型接受的更改通知。
 int viewToModel(float x, float y, Shape a)
          已過時。  
abstract  int viewToModel(float x, float y, Shape a, Position.Bias[] biasReturn)
          提供從視圖坐標空間到模型的邏輯坐標空間的映射。
 
從類別 java.lang.Object 繼承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

欄位詳細資訊

BadBreakWeight

public static final int BadBreakWeight
該權重指示對於格式化來說視圖未處於拆分的好時機。此值指示不應該嘗試將視圖拆分成段,因為該視圖沒有寫入支持分段操作。

另請參見:
getBreakWeight(int, float, float), GoodBreakWeight, ExcellentBreakWeight, ForcedBreakWeight, 常數欄位值

GoodBreakWeight

public static final int GoodBreakWeight
該權重指示視圖支持拆分,但是可能存在更好時機。

另請參見:
getBreakWeight(int, float, float), BadBreakWeight, ExcellentBreakWeight, ForcedBreakWeight, 常數欄位值

ExcellentBreakWeight

public static final int ExcellentBreakWeight
該權重指示視圖支持拆分,並且表示拆分的極好時機。

另請參見:
getBreakWeight(int, float, float), BadBreakWeight, GoodBreakWeight, ForcedBreakWeight, 常數欄位值

ForcedBreakWeight

public static final int ForcedBreakWeight
該權重指示視圖支持拆分,並且在被置入一個通過拆分其子級來格式化子級的視圖時,必須拆分該視圖以恰當的表示它。

另請參見:
getBreakWeight(int, float, float), BadBreakWeight, GoodBreakWeight, ExcellentBreakWeight, 常數欄位值

X_AXIS

public static final int X_AXIS
用於格式化/拆分操作的軸。

另請參見:
常數欄位值

Y_AXIS

public static final int Y_AXIS
用於格式化/拆分操作的軸。

另請參見:
常數欄位值
建構子詳細資訊

View

public View(Element elem)
創建一個新的 View 物件。

參數:
elem - 要表示的 Element
方法詳細資訊

getParent

public View getParent()
返回視圖的父級。

返回:
父級,如果不存在則返回 null

isVisible

public boolean isVisible()
返回一個指示視圖是否可視的 boolean 值。在預設情況下所有視圖都是可視的。

返回:
始終返回 true

getPreferredSpan

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

參數:
axis - 可能是 View.X_AXIS 或者 View.Y_AXIS
返回:
視圖想要在其中呈現的跨距。通常告知視圖呈現在返回的跨距中,但並不保證如此。父級可能選擇調整視圖大小或者拆分視圖。
另請參見:
getPreferredSpan(int)

getMinimumSpan

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

參數:
axis - 可能是 View.X_AXIS 或者 View.Y_AXIS
返回:
視圖能在其中呈現的最小跨距。
另請參見:
getPreferredSpan(int)

getMaximumSpan

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

參數:
axis - 可能是 View.X_AXIS 或者 View.Y_AXIS
返回:
視圖能在其中呈現的最大跨距。
另請參見:
getPreferredSpan(int)

preferenceChanged

public void preferenceChanged(View child,
                              boolean width,
                              boolean height)
子視圖能在父級上調用此方法來指示首選項已經更改,並且應該重新考慮佈局。在預設情況下,此方法僅僅上傳播到下一個父級。根視圖將在相關聯的文本元件上調用 revalidate

參數:
child - 子視圖
width - 如果寬度首選項更改,則該參數為 true
height - 如果高度首選項更改,則該參數為 true
另請參見:
JComponent.revalidate()

getAlignment

public float getAlignment(int axis)
確定此視圖沿某個軸所需的對齊方式。返回所需的對齊方式。這應該是一個 >= 0.0 並且 <= 1.0 的值,其中 0 指示在起始處對齊,1.0 指示在離起始處的整個跨距的地方對齊。0.5 則指示在視圖中央對齊。

參數:
axis - 可能是 View.X_AXIS 或者 View.Y_AXIS
返回:
值 0.5

paint

public abstract void paint(Graphics g,
                           Shape allocation)
使用給定的呈現表面和該表面上的區域來呈現。該視圖可能需要進行佈置和創建子視圖,以使它本身能夠在給定的分派區域呈現。

參數:
g - 要使用的呈現表面
allocation - 分派的要在其中呈現的區域

setParent

public void setParent(View parent)
為此視圖建立父視圖。如果父視圖運行正常,則會保證在其他任何方法之前調用此方法。這也是最後調用的一個方法,因為也調用其來指示已從層次結構中移除視圖。當調用此方法來將父級設置為 null 時,此方法對每一個子級執行同樣操作,傳播它們已經從視圖階層樹中斷開連接的通知。如果重新實作此方法,應該調用 super.setParent()

參數:
parent - 新的父級,如果要從父級中移除視圖,則為 null

getViewCount

public int getViewCount()
返回此視圖中的視圖數。因為預設情況下不是一個復合視圖,所以此方法返回 0。

返回:
視圖數,該值 >= 0
另請參見:
getViewCount()

getView

public View getView(int n)
獲取第 n 個子視圖。因為在預設情況下沒有任何子級,所以此方法返回 null

參數:
n - 要獲取的視圖的編號,該值 >= 0 && < getViewCount()
返回:
視圖

removeAll

public void removeAll()
移除所有子級。此方法是 replace 的便捷調用。

從以下版本開始:
1.3

remove

public void remove(int i)
移除給定位置處的一個子級。此方法是 replace 的便捷調用。

從以下版本開始:
1.3

insert

public void insert(int offs,
                   View v)
插入單個子視圖。此方法是 replace 的便捷調用。

參數:
offs - 要其前插入視圖的偏移量,該值 >= 0
v - 視圖
從以下版本開始:
1.3
另請參見:
replace(int, int, javax.swing.text.View[])

append

public void append(View v)
追加單個子視圖。此方法是 replace 的便捷調用。

參數:
v - 視圖
從以下版本開始:
1.3
另請參見:
replace(int, int, javax.swing.text.View[])

replace

public void replace(int offset,
                    int length,
                    View[] views)
替代子視圖。如果沒有任何視圖要移除,則此方法充當一個插入操作。如果沒有任何視圖要添加,則此方法充當一個移除操作。將要被移除的視圖會將其父級設置為 null,並且移除對它們的內部參考以便能被垃圾回收。實作此方法以不執行任何操作,因為預設情況下視圖沒有任何子級。

參數:
offset - 子視圖中插入新 views 的起始索引。這應當是一個 >= 0 並且 <= getViewCount 的值
length - 要移除的已存在的子視圖數 這應當是一個 >= 0 並且 <= (getViewCount() - offset) 的值。
views - 要添加的子視圖。此值可以為 null,指示當前不添加任何子級(移除時很有用)
從以下版本開始:
1.3

getViewIndex

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

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

getChildAllocation

public Shape getChildAllocation(int index,
                                Shape a)
獲取給定子視圖的分派。這使得在沒有假定視圖如何存儲其位置的情況下,能找出各種視圖的定位。因為預設情況下沒有任何子視圖,所以此方法返回 null

參數:
index - 子級的索引,該值 >= 0 && < getViewCount()
a - 此視圖的分派
返回:
子級的分派

getNextVisualPositionFrom

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

參數:
pos - 要轉換的位置,該值 >= 0
a - 為呈現分派的區域
direction - 以當前位置開始的方向,可以將它們設想為通常出現在鍵盤上的箭頭鍵。它將是以下值之一:
  • SwingConstants.WEST
  • SwingConstants.EAST
  • SwingConstants.NORTH
  • SwingConstants.SOUTH
返回:
模型中的位置,它最能表示下一個可視位置的位置
拋出:
BadLocationException
IllegalArgumentException - 如果 direction 不具有上述合法值之一

modelToView

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

參數:
pos - 所需字元的位置 (>=0)
a - 套件圍了請求字元的視圖區域
b - 當位置是兩個視圖的邊界時,該參數是離由偏移量表示的前一個字元或者下一個字元的偏差;b 將是這些值之一:
  • Position.Bias.Forward
  • Position.Bias.Backward
返回:
在視圖坐標空間中,給定位置處的字元的邊界框
拋出:
BadLocationException - 如果給定的位置不表示關聯文檔中的一個有效位置
IllegalArgumentException - 如果 b 上文列出的 Position.Bias 的合法值之一
另請參見:
viewToModel(float, float, java.awt.Shape, javax.swing.text.Position.Bias[])

modelToView

public Shape modelToView(int p0,
                         Position.Bias b0,
                         int p1,
                         Position.Bias b1,
                         Shape a)
                  throws BadLocationException
為給定區域提供從文檔模型坐標空間到視圖坐標空間的映射。給定區域被創建為第一個和最後一個字元位置的並集。

參數:
p0 - 第一個字元的位置 (>=0)
b0 - 當位置是兩個視圖的一個邊界時,第一個字元位置離由偏移量表示的前一個字元或下一個字元的偏差;b0 將是這些值之一:
  • Position.Bias.Forward
  • Position.Bias.Backward
p1 - 最後一個字元的位置 (>=0)
b1 - 第二個字元位置的偏差,由上文所示的合法值之一來定義
a - 套件圍了請求區域的視圖區域
返回:
邊界框,它是由第一個和最後一個字元位置指定的區域的並集
拋出:
BadLocationException - 如果給定的位置不表示關聯文檔中的一個有效位置
IllegalArgumentException - 如果 b0 或者 b1 不是上文列出的 Position.Bias 的合法值之一
另請參見:
viewToModel(float, float, java.awt.Shape, javax.swing.text.Position.Bias[])

viewToModel

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

參數:
x - X 坐標,該值 >= 0
y - Y 坐標,該值 >= 0
a - 要在其中呈現的分派區域
返回:
模型中最能表示視圖中給定點的位置,該值 >= 0。將填寫 biasReturn 參數來指示給定的點更接近於模型中的下一個字元還是前一個字元。

insertUpdate

public void insertUpdate(DocumentEvent e,
                         Shape a,
                         ViewFactory f)
發出通知,通知在文檔中此視圖負責的某個位置已插入內容。為了減少子類別的負擔,此功能已分散到以下子類別能重新實作的調用中:
  1. 如果此視圖負責的元素發生任何更改,調用 updateChildren。如果此視圖有表示子元素的子視圖,則此方法應當做任何必須的操作來保證子視圖正確表示模型。
  2. 要轉發 DocumentEvent 到合適的子視圖,調用 forwardUpdate
  3. 要給視圖一個機會來修復其佈局、重新計劃佈局或者不做任何操作,調用 updateLayout

參數:
e - 來自關聯文檔的更改資訊
a - 視圖的當前分派區域
f - 用於重建的處理器(如果該視圖有子級)
另請參見:
insertUpdate(javax.swing.event.DocumentEvent, java.awt.Shape, javax.swing.text.ViewFactory)

removeUpdate

public void removeUpdate(DocumentEvent e,
                         Shape a,
                         ViewFactory f)
給出從文檔中此視圖負責的位置移除了某些內容的通知。為了減少子類別的負擔,此功能已分散到以下子類別能重新實作的調用中:
  1. 如果此視圖負責的元素發生任何更改,則調用 updateChildren。如果此視圖有表示子元素的子視圖,則此方法應當做任何必須的操作來保證子視圖正確表示模型。
  2. 要轉發 DocumentEvent 到合適的子視圖,調用 forwardUpdate
  3. 要給視圖一個機會來修復其佈局、重新計劃佈局或者不做任何操作,調用 updateLayout

參數:
e - 來自關聯文檔的更改資訊
a - 視圖的當前分派區域
f - 用於重建的處理器(如果該視圖有子級)
另請參見:
removeUpdate(javax.swing.event.DocumentEvent, java.awt.Shape, javax.swing.text.ViewFactory)

changedUpdate

public void changedUpdate(DocumentEvent e,
                          Shape a,
                          ViewFactory f)
發出通知,通知文檔此視圖負責的位置處的屬性已更改。為了減少子類別的負擔,此功能已分散到以下子類別能重新實作的調用中:
  1. 如果此視圖負責的元素發生任何更改,則調用 updateChildren。如果此視圖有表示子元素的子視圖,則此方法應當做任何必須的操作來保證子視圖正確表示模型。
  2. 要轉發 DocumentEvent 到合適的子視圖,調用 forwardUpdate
  3. 要給視圖一個機會來修復其佈局、重新計劃佈局或者不做任何操作,調用 updateLayout

參數:
e - 發自關聯文檔的更改資訊
a - 視圖的當前分派
f - 視圖有子級時用於重建的處理器 View#changedUpdate

getDocument

public Document getDocument()
獲取與視圖關聯的模型。

返回:
視圖模型,如果沒有則返回 null
另請參見:
getDocument()

getStartOffset

public int getStartOffset()
獲取此視圖負責的模型的一部分。

返回:
模型中的起始偏移量,該值 >= 0
另請參見:
getStartOffset()

getEndOffset

public int getEndOffset()
獲取此視圖負責的模型的一部分。

返回:
模型中的結尾偏移量,該值 >= 0
另請參見:
getEndOffset()

getElement

public Element getElement()
獲取此視圖所映射的主題的結構化部分。該視圖可能沒有負責元素的整個部分。

返回:
主題
另請參見:
getElement()

getGraphics

public Graphics getGraphics()
獲取用於呈現的 Graphics。此方法可以用來確定字元特徵,並且它對於列印視圖和元件視圖是不同的。

返回:
用於呈現的 Graphics 物件
從以下版本開始:
1.3

getAttributes

public AttributeSet getAttributes()
獲取呈現時要使用的屬性。預設情況下此方法只是返回關聯元素的屬性。應該使用此方法而不是直接使用元素來獲得對屬性的存取,從而允許特定於視圖的屬性被混合進來,或者允許視圖具有通過子類別的特定於視圖的屬性變換。每個視圖應當記錄為了呈現或佈局的其能夠識別的屬性,並且應該總是通過此方法所返回的 AttributeSet 來存取它們。


breakView

public View breakView(int axis,
                      int offset,
                      float pos,
                      float len)
試圖在給定的軸上拆分視圖。此方法由試圖對其子級進行格式化的視圖調用。例如,一個段落的視圖通常嘗試將其子級置於行中,表示文本塊的視圖有時能被拆分成為更小的片。

實作此方法以返回視圖本身,這表示在不可拆分時的預設行為。如果視圖確實支持拆分,返回的視圖的起始偏移量應當是給定的偏移量,並且結尾偏移量應當小於或者等於要被拆分的視圖的結尾偏移量。

參數:
axis - 可能是 View.X_AXIS 或者 View.Y_AXIS
offset - 文檔模型中拆分段將佔用的位置,該值 >= 0。這可能是該段返回的起始偏移量
pos - 拆分視圖將沿軸佔用的位置,該值 >= 0。這對製表符計算之類別的操作很有用。
len - 指定所需的可能的拆分沿軸的距離,該值 >= 0
返回:
如果視圖能被拆分,則返回表示給定跨距的視圖段。如果視圖不支持拆分行為,返回視圖本身。
另請參見:
ParagraphView

createFragment

public View createFragment(int p0,
                           int p1)
創建一個表示元素某部分的視圖。此方法在對視圖段進行測量的格式化操作中可能很有用。如果視圖不支持分段(預設),其應該返回視圖本身。

參數:
p0 - 起始偏移量,該值 >= 0。此值應當是一個大於等於元素起始偏移量且小於元素結尾偏移量的值。
p1 - 結尾偏移量,該值 > p0。此值應當是一個小於等於元素結尾偏移量且大於元素起始偏移量的值。
返回:
視圖段,如果視圖不支持拆分成段,則返回視圖本身
另請參見:
LabelView

getBreakWeight

public int getBreakWeight(int axis,
                          float pos,
                          float len)
確定此視圖中拆分時機的權重大小。此方法能用於確定在格式化過程中最傾向調用 breakView 的視圖。例如,表示其中具有空格的文本的視圖可能比沒有空格的視圖更傾向拆分。權值越高,拆分的傾向性更大。等於或者小於 BadBreakWeight 的值不應被考慮進行拆分。大於或者等於 ForcedBreakWeight 值應該被拆分。

實作此方法以提供返回 BadBreakWeight 的預設行為,除非長度大於視圖長度,在這種情況下整個視圖表示一個段。除非一個視圖被寫入支持拆分行為,否則不傾向於試圖並拆分視圖。一定支持拆分的視圖例子是 LabelView。使用拆分權值的視圖範例是 ParagraphView

參數:
axis - 可能是 View.X_AXIS 或者 View.Y_AXIS
pos - 拆分視圖開始的可能的位置,該值 >= 0。這可能對於計算製表符位置很有用。
len - 指定自 pos(可能需要拆分的位置)的相對長度,該值 >= 0
返回:
權值,其應當是 ForcedBreakWeight 和 BadBreakWeight 之間的某個值
另請參見:
LabelView, ParagraphView, BadBreakWeight, GoodBreakWeight, ExcellentBreakWeight, ForcedBreakWeight

getResizeWeight

public int getResizeWeight(int axis)
確定視圖沿給定軸的大小可調整性。對於小於或等於 0 的值,無法調整大小。

參數:
axis - 可能是 View.X_AXISView.Y_AXIS
返回:
權重

setSize

public void setSize(float width,
                    float height)
設置視圖的大小。如果此方法有任何佈局的職責,則它將促使視圖沿給定軸進行佈局。

參數:
width - 寬度,該值 >= 0
height - 高度,該值 >= 0

getContainer

public Container getContainer()
獲取承載視圖的容器。此方法對計劃一次重繪、找出承載元件字體等操作很有用。此方法的預設實作是將查詢轉發給父視圖。

返回:
容器,如果沒有,則返回 null

getViewFactory

public ViewFactory getViewFactory()
獲取將提供給視圖層次結構的 ViewFactory 實作。通常將視圖提供給此方法作為參數,以便在它們最可能需要該處理器的時候根據模型更新,但是在其他時候,此方法便以足夠。

返回:
處理器,如果沒有,則返回 null

getToolTipText

public String getToolTipText(float x,
                             float y,
                             Shape allocation)
返回提定位置的工具提示文本。預設實作返回傳入位置標識的子 View 的值。

從以下版本開始:
1.4
另請參見:
JTextComponent.getToolTipText(java.awt.event.MouseEvent)

getViewIndex

public int getViewIndex(float x,
                        float y,
                        Shape allocation)
返回表示視圖中給定位置的子視圖索引。此方法迭代所有子級,返回第一個具有包含 xy 的邊界的子級。

參數:
x - x 坐標
y - y 坐標
allocation - View 中的當前分派。
返回:
表示給定位置的視圖索引,如果沒有任何視圖表示該位置,則返回 -1
從以下版本開始:
1.4

updateChildren

protected boolean updateChildren(DocumentEvent.ElementChange ec,
                                 DocumentEvent e,
                                 ViewFactory f)
更新子視圖以回應接收模型變化的通知,並且有一條此視圖負責的元素的變化記錄。實作此方法以假定子視圖直接負責此視圖所表示的元素的子元素。ViewFactory 用來為每個元素創建子視圖,這些子視圖將從給定的 ElementChange 中指定的索引開始被添加到 ElementChange 中。移除表示已移除指定元素的子視圖數目。

參數:
ec - 此視圖所負責的元素的更改資訊。如果調用此方法,該參賽不應當為 null
e - 來自關聯文檔的變化資訊
f - 用於建構子視圖的處理器
返回:
子視圖是否表示此視圖所負責的元素的子元素。某些視圖創建表示其所負責的一部分元素的子級,其應當返回 false。此資訊用於確定是否應該轉發添加的元素範圍中的視圖
從以下版本開始:
1.3
另請參見:
insertUpdate(javax.swing.event.DocumentEvent, java.awt.Shape, javax.swing.text.ViewFactory), removeUpdate(javax.swing.event.DocumentEvent, java.awt.Shape, javax.swing.text.ViewFactory), changedUpdate(javax.swing.event.DocumentEvent, java.awt.Shape, javax.swing.text.ViewFactory)

forwardUpdate

protected void forwardUpdate(DocumentEvent.ElementChange ec,
                             DocumentEvent e,
                             Shape a,
                             ViewFactory f)
將給定的 DocumentEvent 轉發給需要被通知模型更改的子視圖。如果此視圖負責的元素發生了更改,則在轉發時應當考慮該更改(即新子視圖不應該獲得通知)。

參數:
ec - 此視圖所負責的元素的更改(如果沒有任何更改,則為 null)。
e - 來自關聯文檔的更改資訊
a - 視圖的當前分派區域
f - 用於重建的處理器(如果該視圖有子級)
從以下版本開始:
1.3
另請參見:
insertUpdate(javax.swing.event.DocumentEvent, java.awt.Shape, javax.swing.text.ViewFactory), removeUpdate(javax.swing.event.DocumentEvent, java.awt.Shape, javax.swing.text.ViewFactory), changedUpdate(javax.swing.event.DocumentEvent, java.awt.Shape, javax.swing.text.ViewFactory)

forwardUpdateToView

protected void forwardUpdateToView(View v,
                                   DocumentEvent e,
                                   Shape a,
                                   ViewFactory f)
DocumentEvent 轉發到給定的子視圖。此方法只是根據實際型別,通過對 insertUpdateremoveUpdate 或者 changedUpdate 的調用來將訊息傳遞給視圖。此方法由 forwardUpdate 調用來將事件轉發給需要它的子級。

參數:
v - 作為事件轉發目標的子視圖
e - 來自關聯文檔的更改資訊
a - 視圖的當前分派
f - 用於重建的處理器(如果視圖有子級)
從以下版本開始:
1.3
另請參見:
forwardUpdate(javax.swing.event.DocumentEvent.ElementChange, javax.swing.event.DocumentEvent, java.awt.Shape, javax.swing.text.ViewFactory)

updateLayout

protected void updateLayout(DocumentEvent.ElementChange ec,
                            DocumentEvent e,
                            Shape a)
更新佈局,以回應從模型接受的更改通知。如果 ElementChange 記錄不為 null,則實作此方法來調用 preferenceChanged 以重新計劃一個新的佈局。

參數:
ec - 此視圖所負責的元素的更改(如果沒有任何更改則為 null
e - 來自關聯文檔的更改資訊
a - 視圖的當前分派
從以下版本開始:
1.3
另請參見:
insertUpdate(javax.swing.event.DocumentEvent, java.awt.Shape, javax.swing.text.ViewFactory), removeUpdate(javax.swing.event.DocumentEvent, java.awt.Shape, javax.swing.text.ViewFactory), changedUpdate(javax.swing.event.DocumentEvent, java.awt.Shape, javax.swing.text.ViewFactory)

modelToView

@Deprecated
public Shape modelToView(int pos,
                                    Shape a)
                  throws BadLocationException
已過時。 

提供從文檔模型坐標空間到所映射的視圖坐標空間的映射。實作此方法以將偏差預設為前文提到的 Position.Bias.Forward

參數:
pos - 要轉換的位置,該值 >= 0
a - 分派的要在其中呈現的區域
返回:
返回給定位置的邊界框
拋出:
BadLocationException - 如果給定位置在所關聯的文檔中不是一個有效位置
另請參見:
modelToView(int, java.awt.Shape, javax.swing.text.Position.Bias)

viewToModel

@Deprecated
public int viewToModel(float x,
                                  float y,
                                  Shape a)
已過時。 

提供從視圖坐標空間到該模型的邏輯坐標空間的映射。

參數:
x - X 坐標,該值 >= 0
y - Y 坐標,該值 >= 0
a - 分派的要在其中呈現的區域
返回:
模型中最能代表視圖中給定點的位置,該值 >= 0
另請參見:
viewToModel(float, float, java.awt.Shape, javax.swing.text.Position.Bias[])

JavaTM 2 Platform
Standard Ed. 6

提交錯誤或意見

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