JavaTM 2 Platform
Standard Ed. 6

javax.swing.text
類別 ComponentView

java.lang.Object
  繼承者 javax.swing.text.View
      繼承者 javax.swing.text.ComponentView
所有已實作的介面:
SwingConstants
直接已知子類別:
FormView, ObjectView

public class ComponentView
extends View

實作視圖介面的元件裝飾器。整個元素用於代表該元件。它充當了只供顯示的 View 實作和交談式輕量級元件之間的網關(即允許元件嵌入 View 層次結構中)。

元件根據 Component.getAlignmentY 返回的值相對於文本基線放置。對於 Swing 元件,使用 JComponent.setAlignmentY 方法可以很便捷地設置此值。例如,值設置為 0.75 將使元件的 75% 位於基線的上面,25% 位於基線的下面。

通過確保在事件執行緒中完成對所有的元件存取,實作此類別可完成在多執行緒情況下(例如,來自模型更改的同步通知)進行正常工作所需的工作。

所使用的元件由 createComponent 方法的返回值確定。此方法的預設實作為將存儲的元件作為元素的一個屬性返回(通過調用 StyleConstants.getComponent)。此行為有一個限制,元件不能由多於一個文本元件(即可共享的模型)使用。通過實作 createComponent 從而實際上基於屬性中包含的某種規範創建一個元件,子類別可消除此約束。html 套件中的 ObjectView 類別為 ComponentView 實作的一個範例,它支持一個共享模型的多元件視圖。


欄位摘要
 
從類別 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
 
建構子摘要
ComponentView(Element elem)
          創建新的 ComponentView 物件。
 
方法摘要
protected  Component createComponent()
          創建與此視圖關聯的元件。
 float getAlignment(int axis)
          確定此視圖沿某軸所需的對齊方式。
 Component getComponent()
          獲取與此視圖關聯的元件。
 float getMaximumSpan(int axis)
          確定此視圖沿某軸的最大區域。
 float getMinimumSpan(int axis)
          確定此視圖沿某軸的最小區域。
 float getPreferredSpan(int axis)
          確定此視圖沿某軸的首選區域。
 Shape modelToView(int pos, Shape a, Position.Bias b)
          提供模型坐標空間到視圖坐標空間的映射。
 void paint(Graphics g, Shape a)
          真正的繪製行為自然來源於元件與其父容器(容納此視圖的同一容器)之間的關聯。
 void setParent(View p)
          為子視圖設置父級。
 int viewToModel(float x, float y, Shape a, Position.Bias[] bias)
          提供從視圖坐標空間到模型邏輯坐標空間的映射。
 
從類別 javax.swing.text.View 繼承的方法
append, breakView, changedUpdate, createFragment, forwardUpdate, forwardUpdateToView, getAttributes, getBreakWeight, getChildAllocation, getContainer, getDocument, getElement, getEndOffset, getGraphics, getNextVisualPositionFrom, getParent, getResizeWeight, getStartOffset, getToolTipText, getView, getViewCount, getViewFactory, getViewIndex, getViewIndex, insert, insertUpdate, isVisible, modelToView, modelToView, preferenceChanged, remove, removeAll, removeUpdate, replace, setSize, updateChildren, updateLayout, viewToModel
 
從類別 java.lang.Object 繼承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

建構子詳細資訊

ComponentView

public ComponentView(Element elem)
創建新的 ComponentView 物件。

參數:
elem - 要裝飾的元素
方法詳細資訊

createComponent

protected Component createComponent()
創建與此視圖關聯的元件。當確定需要一個新元件時將調用此方法。在調用 setParent 的過程中,或者在收到屬性已更改的通知時,都有可能調用上面的方法。


getComponent

public final Component getComponent()
獲取與此視圖關聯的元件。


paint

public void paint(Graphics g,
                  Shape a)
真正的繪製行為自然來源於元件與其父容器(容納此視圖的同一容器)之間的關聯。實作它不進行任何操作。

指定者:
類別 View 中的 paint
參數:
g - 圖形上下文
a - 形狀
另請參見:
View.paint(java.awt.Graphics, java.awt.Shape)

getPreferredSpan

public float getPreferredSpan(int axis)
確定此視圖沿某軸的首選區域。實作它可返回由 Component.getPreferredSize 返回的沿所需軸的值。

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

getMinimumSpan

public float getMinimumSpan(int axis)
確定此視圖沿某軸的最小區域。實作它可返回由 Component.getMinimumSize 返回的沿所需軸的值。

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

getMaximumSpan

public float getMaximumSpan(int axis)
確定此視圖沿某軸的最大區域。實作它可返回由 Component.getMaximumSize 返回的沿所需軸的值。

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

getAlignment

public float getAlignment(int axis)
確定此視圖沿某軸所需的對齊方式。實作它來為嵌入元件提供對齊方式。

覆寫:
類別 View 中的 getAlignment
參數:
axis - 可以是 View.X_AXIS 或 View.Y_AXIS
返回:
需要的對齊方式。這應該是介於 0.0 和 1.0 之間的一個值,0 指示在起始位置對齊,1.0 指示在離開起始位置的整個跨距處對齊。為 0.5 表示在視圖的中心對齊。

setParent

public void setParent(View p)
為子視圖設置父級。父級在子級上調用此方法以告知子級誰為其父,同時為類似宿主 Container 的元件提供視圖存取。如果父視圖參數為非空(null)且尚未創建元件,將執行父級類別行為,然後調用 createComponent。嵌入元件的父被設置為由 getContainer 返回的值。如果父視圖參數為 null,此視圖將被清空,這樣元件將從其父中移除。

更改元件所在的層次結構將會觸動元件鎖,這是 View 層次結構的一個不安全之處。因此,如果在事件執行緒中,則會立即執行此功能;如果是從另一個執行緒(來自非同步更新的更改通知)調用,則此功能將在事件佇列排隊。

覆寫:
類別 View 中的 setParent
參數:
p - 父級

modelToView

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

指定者:
類別 View 中的 modelToView
參數:
pos - 要轉換的位置,該值 >= 0
a - 分派的要在其中呈現的區域
b - 當位置是兩個視圖的邊界時,該參數是離由偏移量表示的前一個字元或者下一個字元的偏差;b 將是這些值之一:
  • Position.Bias.Forward
  • Position.Bias.Backward
返回:
返回給定位置的邊界框
拋出:
BadLocationException - 如果給定位置在所關聯的文檔中不是一個有效位置
另請參見:
View.modelToView(int, java.awt.Shape, javax.swing.text.Position.Bias)

viewToModel

public int viewToModel(float x,
                       float y,
                       Shape a,
                       Position.Bias[] bias)
提供從視圖坐標空間到模型邏輯坐標空間的映射。

指定者:
類別 View 中的 viewToModel
參數:
x - X 坐標,該值 >= 0
y - Y 坐標,該值 >= 0
a - 分派的要在其中呈現的區域
返回:
模型中最能代表視圖中給定點的位置
另請參見:
View.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