JavaTM 2 Platform
Standard Ed. 6

javax.swing.text
類別 CompositeView

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

public abstract class CompositeView
extends View

CompositeView 是一個管理著一個或多個子視圖的抽象 View 實作。(注意,CompositeView 主要管理相對較少的子視圖。)CompositeView 主要充當 View 實作的起點,例如 BoxView,它將包含子 View。要管理子 View 集的子類別應使用 replace(int, int, javax.swing.text.View[]) 方法。由於 ViewDocumentListener 通知過程中調用 replace,所以通常不需要直接調用 replace

雖然 CompositeView 不會對其子 View 施加佈局策略,但它允許插入將包含的子 View。插入內容可通過 setInsets(short, short, short, short)setParagraphInsets(javax.swing.text.AttributeSet) 進行設置。

除了 View 的抽象方法之外,CompositeView 的子類別還需要覆寫:


欄位摘要
 
從類別 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
 
建構子摘要
CompositeView(Element elem)
          為給定元素建構一個 CompositeView
 
方法摘要
protected abstract  void childAllocation(int index, Rectangle a)
          返回給定子級的分派區域。
protected  boolean flipEastAndWestAtEnds(int position, Position.Bias bias)
          確定下一個視圖放置的朝向。
protected  short getBottomInset()
          獲取底部 inset。
 Shape getChildAllocation(int index, Shape a)
          獲取要在其中呈現的給定子視圖的分派區域。
protected  Rectangle getInsideAllocation(Shape a)
          將分派給視圖的不可變分派區域轉換為表示內部分派區域的可變分派區域(即給定分派區域的邊界,其頂部、左部、底部和右部的 insets 已移除)。
protected  short getLeftInset()
          獲取左部 inset。
protected  int getNextEastWestVisualPositionFrom(int pos, Position.Bias b, Shape a, int direction, Position.Bias[] biasRet)
          返回鼠標的下一個可視位置,可以在東或在西。
protected  int getNextNorthSouthVisualPositionFrom(int pos, Position.Bias b, Shape a, int direction, Position.Bias[] biasRet)
          返回鼠標的下一個可視位置,可以在北也可以在南。
 int getNextVisualPositionFrom(int pos, Position.Bias b, Shape a, int direction, Position.Bias[] biasRet)
          提供一種方法來確定下一個以可視化形式表示的模型位置,使用者可以在此位置放置一個插入符。
protected  short getRightInset()
          獲取右部 inset。
protected  short getTopInset()
          獲取頂部 inset。
 View getView(int n)
          返回該容器中的第 n 個視圖。
protected abstract  View getViewAtPoint(int x, int y, Rectangle alloc)
          獲取位於給定坐標的子視圖。
protected  View getViewAtPosition(int pos, Rectangle a)
          獲取表示模型中給定位置的子視圖。
 int getViewCount()
          返回此視圖的子視圖數。
 int getViewIndex(int pos, Position.Bias b)
          返回表示模型中給定位置的子視圖索引。
protected  int getViewIndexAtPosition(int pos)
          獲取表示模型中給定位置的子視圖索引。
protected abstract  boolean isAfter(int x, int y, Rectangle alloc)
          測試一個點是否位於矩形範圍之後。
protected abstract  boolean isBefore(int x, int y, Rectangle alloc)
          測試一個點是否位於矩形範圍之前。
protected  void loadChildren(ViewFactory f)
          載入所有的子級以初始化該視圖。
 Shape modelToView(int p0, Position.Bias b0, int p1, Position.Bias b1, Shape a)
          提供從文檔模型坐標空間到所映射的視圖坐標空間的映射。
 Shape modelToView(int pos, Shape a, Position.Bias b)
          提供從文檔模型坐標空間到所映射的視圖坐標空間的映射。
 void replace(int offset, int length, View[] views)
          替換子視圖。
protected  void setInsets(short top, short left, short bottom, short right)
          設置視圖的 insets。
protected  void setParagraphInsets(AttributeSet attr)
          按照給定屬性中指定的段落屬性設置 insets。
 void setParent(View parent)
          設置此視圖的父級。
 int viewToModel(float x, float y, Shape a, Position.Bias[] bias)
          提供從視圖坐標空間到模型的邏輯坐標空間的映射。
 
從類別 javax.swing.text.View 繼承的方法
append, breakView, changedUpdate, createFragment, forwardUpdate, forwardUpdateToView, getAlignment, getAttributes, getBreakWeight, getContainer, getDocument, getElement, getEndOffset, getGraphics, getMaximumSpan, getMinimumSpan, getParent, getPreferredSpan, getResizeWeight, getStartOffset, getToolTipText, getViewFactory, getViewIndex, insert, insertUpdate, isVisible, modelToView, paint, preferenceChanged, remove, removeAll, removeUpdate, setSize, updateChildren, updateLayout, viewToModel
 
從類別 java.lang.Object 繼承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

建構子詳細資訊

CompositeView

public CompositeView(Element elem)
為給定元素建構一個 CompositeView

參數:
elem - 此視圖負責的元素
方法詳細資訊

loadChildren

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

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

setParent

public void setParent(View parent)
設置此視圖的父級。重新實作此方法可提供父級類別行為,並可在此視圖無子級的情況下調用 loadChildren 方法。不應在建構子中載入子級,因為設置父級的動作可能引起它們試圖沿層次結構向上搜尋,例如,要獲得承載 Container。如果此視圖有子級(視圖從視圖層次結構中的一個位置移動到另一個位置),則不調用 loadChildren 方法。

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

getViewCount

public int getViewCount()
返回此視圖的子視圖數。

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

getView

public View getView(int n)
返回該容器中的第 n 個視圖。

覆寫:
類別 View 中的 getView
參數:
n - 需要的視圖數量,該數量 >= 0 且 < getViewCount()
返回:
索引為 n 的視圖

replace

public void replace(int offset,
                    int length,
                    View[] views)
替換子視圖。如果沒有要移除的視圖,此方法視為插入操作。如果沒有要添加的視圖,此方法視為移除操作。被移除的視圖的父級將被設置為 null,並且移除了對它們的內部參考,所以它們有可能被作為垃圾回收。

覆寫:
類別 View 中的 replace
參數:
offset - 要插入新視圖的子視圖的起始索引;該索引 >= 0 且 <= getViewCount
length - 要移除的現有子視圖數;此值應 >= 0 且 <= (getViewCount() - offset)
views - 要添加的子視圖;此值可以為 null,表示不添加任何子級(對移除有用)

getChildAllocation

public Shape getChildAllocation(int index,
                                Shape a)
獲取要在其中呈現的給定子視圖的分派區域。這有助於獲得各個視圖所處的位置。

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

modelToView

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

指定者:
類別 View 中的 modelToView
參數:
pos - 要轉換的位置,該位置 >= 0
a - 要在其中呈現的已分派區域
b - 一個偏移值,可以是 Position.Bias.ForwardPosition.Bias.Backward
返回:
給定位置的邊界框
拋出:
BadLocationException - 如果給定位置不是相關文檔中的有效位置
另請參見:
View.modelToView(int, 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
提供從文檔模型坐標空間到所映射的視圖坐標空間的映射。

覆寫:
類別 View 中的 modelToView
參數:
p0 - 要轉換的位置,該位置 >= 0
b0 - 由 p0 表示的上一字元或下一個字元的偏移量,在這種情況下,該位置是兩個視圖的邊界;既可以是 Position.Bias.Forward,也可以是 Position.Bias.Backward
p1 - 要轉換的位置,該位置 >= 0
b1 - 由 p1 表示的上一字元或下一個字元的偏移量,在這種情況下,該位置是兩個視圖的邊界;
a - 要呈現的已分派區域
返回:
返回給定位置的邊界框
拋出:
BadLocationException - 如果給定位置不是相關文檔中的有效位置
IllegalArgumentException - 如果為無效的偏移量參數
另請參見:
View.viewToModel(float, float, 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 - 要呈現的已分派區域
bias - 可以是 Position.Bias.ForwardPosition.Bias.Backward
返回:
模型中最能代表視圖中給定點的位置,該位置 >= 0
另請參見:
View.viewToModel(float, float, java.awt.Shape, javax.swing.text.Position.Bias[])

getNextVisualPositionFrom

public int getNextVisualPositionFrom(int pos,
                                     Position.Bias b,
                                     Shape a,
                                     int direction,
                                     Position.Bias[] biasRet)
                              throws BadLocationException
提供一種方法來確定下一個以可視化形式表示的模型位置,使用者可以在此位置放置一個插入符。有些視圖可能不可見,它們可能與該模型中發現的順序不同,或它們可能只是不允許存取該模型中的某些位置。這是一個適用於 getNextNorthSouthVisualPositionFrom(int, javax.swing.text.Position.Bias, java.awt.Shape, int, javax.swing.text.Position.Bias[])getNextEastWestVisualPositionFrom(int, javax.swing.text.Position.Bias, java.awt.Shape, int, javax.swing.text.Position.Bias[]) 的便捷方法。

覆寫:
類別 View 中的 getNextVisualPositionFrom
參數:
pos - 要轉換的位置,該位置 >= 0
b - 偏移量值,可以是 Position.Bias.ForwardPosition.Bias.Backward
a - 要呈現的已分派區域
direction - 相對當前位置的方向,通常可視為鍵盤上看到的方向鍵;它可能為下列值之一:
  • SwingConstants.WEST
  • SwingConstants.EAST
  • SwingConstants.NORTH
  • SwingConstants.SOUTH
biasRet - 一個套件含已檢查偏移量的陣列
返回:
模型中最能代表下一個可視位置的位置
拋出:
BadLocationException
IllegalArgumentException - 如果 direction 無效

getViewIndex

public int getViewIndex(int pos,
                        Position.Bias b)
返回表示模型中給定位置的子視圖索引。實作此方法可調用 getViewIndexByPosition 方法以便向後相容。

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

isBefore

protected abstract boolean isBefore(int x,
                                    int y,
                                    Rectangle alloc)
測試一個點是否位於矩形範圍之前。

參數:
x - X 坐標,該坐標 >= 0
y - Y 坐標,該坐標 >= 0
alloc - 矩形
返回:
如果該點位於指定範圍之前,則返回 true

isAfter

protected abstract boolean isAfter(int x,
                                   int y,
                                   Rectangle alloc)
測試一個點是否位於矩形範圍之後。

參數:
x - X 坐標,該坐標 >= 0
y - Y 坐標,該坐標 >= 0
alloc - 矩形
返回:
如果該點位於指定範圍之後,則返回 true

getViewAtPoint

protected abstract View getViewAtPoint(int x,
                                       int y,
                                       Rectangle alloc)
獲取位於給定坐標的子視圖。

參數:
x - X 坐標,該坐標 >= 0
y - Y 坐標,該坐標 >= 0
alloc - 入口處父級的分派區域,出口處應改為子級的分派區域
返回:
子視圖

childAllocation

protected abstract void childAllocation(int index,
                                        Rectangle a)
返回給定子級的分派區域。

參數:
index - 子級的索引,該索引 >= 0 且 < getViewCount()
a - 入口處框內部的分派區域,和出口索引處的子視圖分派區域。

getViewAtPosition

protected View getViewAtPosition(int pos,
                                 Rectangle a)
獲取表示模型中給定位置的子視圖。實作此方法,以便在每個子元素都有一個子視圖的情況下獲取視圖。

參數:
pos - 位置,該位置 >= 0
a - 入口處框內部的分派區域,出口處包含此位置的視圖分派區域
返回:
表示給定位置的視圖,如果沒有視圖,則為 null

getViewIndexAtPosition

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

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

getInsideAllocation

protected Rectangle getInsideAllocation(Shape a)
將分派給視圖的不可變分派區域轉換為表示內部分派區域的可變分派區域(即給定分派區域的邊界,其頂部、左部、底部和右部的 insets 已移除)。返回值需要進一步改變以表示子視圖的分派區域。實作此方法可重用一個實例變數,這樣可避免創建太多的矩形。通常調用此方法的結果將傳給 childAllocation 方法。

參數:
a - 分派給視圖的分派區域
返回:
表示視圖邊界空白全部移除後的內部分派區域;如果給定分派區域為 null,則返回值為 null

setParagraphInsets

protected void setParagraphInsets(AttributeSet attr)
按照給定屬性中指定的段落屬性設置 insets。

參數:
attr - 屬性

setInsets

protected void setInsets(short top,
                         short left,
                         short bottom,
                         short right)
設置視圖的 insets。

參數:
top - 頂部 inset,該值 >= 0
left - 左部 inset,該值 >= 0
bottom - 底部 inset,該值 >= 0
right - 右部 inset,該值 >= 0

getLeftInset

protected short getLeftInset()
獲取左部 inset。

返回:
inset,該值 >= 0

getRightInset

protected short getRightInset()
獲取右部 inset。

返回:
inset,該值 >= 0

getTopInset

protected short getTopInset()
獲取頂部 inset。

返回:
inset,該值 >= 0

getBottomInset

protected short getBottomInset()
獲取底部 inset。

返回:
inset,該值 >= 0

getNextNorthSouthVisualPositionFrom

protected int getNextNorthSouthVisualPositionFrom(int pos,
                                                  Position.Bias b,
                                                  Shape a,
                                                  int direction,
                                                  Position.Bias[] biasRet)
                                           throws BadLocationException
返回鼠標的下一個可視位置,可以在北也可以在南。

參數:
pos - 要轉換的位置,該位置 >= 0
b - 偏移量值,可以是 Position.Bias.ForwardPosition.Bias.Backward
a - 要呈現的已分派區域
direction - 相對當前位置的方向,通常可視為鍵盤上看到的方向鍵;它可能為下列值之一:
  • SwingConstants.NORTH
  • SwingConstants.SOUTH
biasRet - 一個套件含已檢查偏移量的陣列
返回:
模型中最能代表下一個向北或向南的位置
拋出:
BadLocationException
IllegalArgumentException - 如果 direction 無效
另請參見:
getNextVisualPositionFrom(int, javax.swing.text.Position.Bias, java.awt.Shape, int, javax.swing.text.Position.Bias[])

getNextEastWestVisualPositionFrom

protected int getNextEastWestVisualPositionFrom(int pos,
                                                Position.Bias b,
                                                Shape a,
                                                int direction,
                                                Position.Bias[] biasRet)
                                         throws BadLocationException
返回鼠標的下一個可視位置,可以在東或在西。

參數:
pos - 要轉換的位置,該位置 >= 0
b - 偏移量值,可以是 Position.Bias.ForwardPosition.Bias.Backward
a - 要呈現的已分派區域
direction - 相對當前位置的方向,通常可視為鍵盤上看到的方向鍵;它可能為下列值之一:
  • SwingConstants.WEST
  • SwingConstants.EAST
biasRet - 一個套件含已檢查偏移量的陣列
返回:
模型中最能代表下一個向西或向東的位置
拋出:
BadLocationException
IllegalArgumentException - 如果 direction 無效
另請參見:
getNextVisualPositionFrom(int, javax.swing.text.Position.Bias, java.awt.Shape, int, javax.swing.text.Position.Bias[])

flipEastAndWestAtEnds

protected boolean flipEastAndWestAtEnds(int position,
                                        Position.Bias bias)
確定下一個視圖放置的朝向。假定 View 位於索引 n 處,通常 View 是從左向右放置的,所以在東面的 View 將位於索引 n + 1 處,在西面的 View 將位於索引 n - 1 處。在某些情況下(例如雙向文本中)有可能東面的 View 不是位於 n + 1 處,而是位於 n - 1 處,或者西面的 View 不是位於 n - 1 處,而是位於索引 n + 1 處。這種情況下,該方法將返回 true,指示 View 按降序放置。

它無條件返回 false,如果有可能需要按降序放置 View,則子類別應覆寫此方法。

參數:
position - 模型中的位置
bias - 可以是 Position.Bias.ForwardPosition.Bias.Backward
返回:
false

JavaTM 2 Platform
Standard Ed. 6

提交錯誤或意見

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