JavaTM 2 Platform
Standard Ed. 6

javax.swing.text
類別 BoxView

java.lang.Object
  繼承者 javax.swing.text.View
      繼承者 javax.swing.text.CompositeView
          繼承者 javax.swing.text.BoxView
所有已實作的介面:
SwingConstants
直接已知子類別:
BlockView, FlowView, TableView, TableView.TableCell, TableView.TableRow, WrappedPlainView, ZoneView

public class BoxView
extends CompositeView

一個視圖,它通過沿某軸平鋪將其子級排列到框形狀中。此框與 TeX 中的框有些類似,它需要處理子級的對齊方式,還要考慮到子級的靈活性等等。這是一個建構塊,可用於表示類似線、段落、列表、列、頁面等的集合。子級平鋪時沿用的軸被視為主軸。與它垂直的軸為輔軸。

每個軸的佈局分別由 layoutMajorAxislayoutMinorAxis 方法單獨處理。子類別可通過重新實作這些方法來更改該佈局演算法。需要時將根據是否有快取記憶體佈局資訊以及此快取記憶體是否有效來調用這些方法。通常情況下,當沿軸的給定大小發生更改,或者調用了 layoutChanged 對佈局強制更新時,此方法被調用。layoutChanged 方法使快取記憶體佈局資訊無效(如果有)。發佈到父視圖的要求是通過 calculateMajorAxisRequirementscalculateMinorAxisRequirements 進行計算的。如果佈局演算法已更改,這些方法按道理都需要重新實作。


欄位摘要
 
從類別 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
 
建構子摘要
BoxView(Element elem, int axis)
          建構一個 BoxView
 
方法摘要
protected  void baselineLayout(int targetSpan, int axis, int[] offsets, int[] spans)
          在給定的 targetSpan 區域,即我們將使用的區域的寬度(或高度),計算每個子視圖在此 BoxView 中的位置和擴展。
protected  SizeRequirements baselineRequirements(int axis, SizeRequirements r)
          通過檢查每個子視圖的大小計算此 BoxView 的大小要求。
protected  SizeRequirements calculateMajorAxisRequirements(int axis, SizeRequirements r)
          計算主軸 axis 的大小要求。
protected  SizeRequirements calculateMinorAxisRequirements(int axis, SizeRequirements r)
          計算輔軸 axis 的大小要求。
protected  void childAllocation(int index, Rectangle alloc)
          為子視圖分派一個區域。
protected  boolean flipEastAndWestAtEnds(int position, Position.Bias bias)
          確定下一個視圖的放置方向。
protected  void forwardUpdate(DocumentEvent.ElementChange ec, DocumentEvent e, Shape a, ViewFactory f)
          將給定的 DocumentEvent 轉發給需要接收模型更改通知的子視圖。
 float getAlignment(int axis)
          確定此視圖沿某個軸所需的調整值。
 int getAxis()
          獲取平鋪軸屬性。
 Shape getChildAllocation(int index, Shape a)
          獲取給定子視圖的分派。
 int getHeight()
          返回框的當前高度。
 float getMaximumSpan(int axis)
          確定此視圖沿某個軸的最大區域。
 float getMinimumSpan(int axis)
          確定此視圖沿某個軸的最小區域。
protected  int getOffset(int axis, int childIndex)
          獲取特定子級當前佈局的偏移量。
 float getPreferredSpan(int axis)
          確定此視圖沿某個軸的首選區域。
 int getResizeWeight(int axis)
          獲取調整的權重。
protected  int getSpan(int axis, int childIndex)
          獲取特定子級的當前佈局的區域。
protected  View getViewAtPoint(int x, int y, Rectangle alloc)
          獲取給定坐標處的子視圖。
 int getWidth()
          返回框的當前寬度。
protected  boolean isAfter(int x, int y, Rectangle innerAlloc)
          確定一個點是否位於分派區域的後面。
protected  boolean isAllocationValid()
          子級分派是否仍有效。
protected  boolean isBefore(int x, int y, Rectangle innerAlloc)
          確定一個點是否位於分派區域的前面。
protected  boolean isLayoutValid(int axis)
          確定沿給定軸的佈局是否有效。
protected  void layout(int width, int height)
          執行對框的佈局
 void layoutChanged(int axis)
          使沿某軸的佈局變得無效。
protected  void layoutMajorAxis(int targetSpan, int axis, int[] offsets, int[] spans)
          執行對框的主軸的佈局(即它所代表的軸)。
protected  void layoutMinorAxis(int targetSpan, int axis, int[] offsets, int[] spans)
          執行對框的輔軸的佈局(即與它所代表的軸垂直的軸)。
 Shape modelToView(int pos, Shape a, Position.Bias b)
          提供從文檔模型的坐標空間到映射到它的視圖的坐標空間的映射。
 void paint(Graphics g, Shape allocation)
          使用該面給定的呈現面和區域呈現 BoxView
protected  void paintChild(Graphics g, Rectangle alloc, int index)
          繪製一個子級。
 void preferenceChanged(View child, boolean width, boolean height)
          這由子級來調用,以表明它的首選項區域已更改。
 void replace(int index, int length, View[] elems)
          使佈局變得無效並調整所需/分派的快取記憶體大小。
 void setAxis(int axis)
          設置平鋪軸屬性。
 void setSize(float width, float height)
          設置視圖的大小。
 int viewToModel(float x, float y, Shape a, Position.Bias[] bias)
          提供從視圖坐標空間到模型邏輯坐標空間的映射。
 
從類別 javax.swing.text.CompositeView 繼承的方法
getBottomInset, getInsideAllocation, getLeftInset, getNextEastWestVisualPositionFrom, getNextNorthSouthVisualPositionFrom, getNextVisualPositionFrom, getRightInset, getTopInset, getView, getViewAtPosition, getViewCount, getViewIndex, getViewIndexAtPosition, loadChildren, 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, insertUpdate, isVisible, modelToView, remove, removeAll, removeUpdate, updateChildren, updateLayout, viewToModel
 
從類別 java.lang.Object 繼承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

建構子詳細資訊

BoxView

public BoxView(Element elem,
               int axis)
建構一個 BoxView

參數:
elem - 此視圖負責的元素
axis - View.X_AXISView.Y_AXIS 之一
方法詳細資訊

getAxis

public int getAxis()
獲取平鋪軸屬性。這是子視圖平鋪沿用的軸。

返回:
框的主軸,可以是 View.X_AXISView.Y_AXIS
從以下版本開始:
1.3

setAxis

public void setAxis(int axis)
設置平鋪軸屬性。這是子視圖平鋪沿用的軸。

參數:
axis - View.X_AXISView.Y_AXIS 之一
從以下版本開始:
1.3

layoutChanged

public void layoutChanged(int axis)
使沿某軸的佈局變得無效。如果任何一個子視圖的首選項發生更改,將自動使所沿軸的佈局變得無效。有些情況下,如果首選項未更改,則可能需要重新計算佈局。調用此方法可將佈局標記為無效。下次在此視圖(通常在繪製中)上調用 setSize 方法時,佈局將被更新。

參數:
axis - View.X_AXISView.Y_AXIS 之一
從以下版本開始:
1.3

isLayoutValid

protected boolean isLayoutValid(int axis)
確定沿給定軸的佈局是否有效。

參數:
axis - View.X_AXISView.Y_AXIS 之一
從以下版本開始:
1.4

paintChild

protected void paintChild(Graphics g,
                          Rectangle alloc,
                          int index)
繪製一個子級。預設情況下,這就是它所執行的所有功能,但是子類別可使用此方法繪製與該子級有關的元件。

參數:
g - 圖像上下文
alloc - 分派的要向其繪製的區域
index - 子級的索引,該索引 >= 0 && < getViewCount()

replace

public void replace(int index,
                    int length,
                    View[] elems)
使佈局變得無效並調整所需/分派的快取記憶體大小。舊佈局中的子級分派仍可被存取,但是新的子級將都有一個值為 0 的偏移量和區域。

覆寫:
類別 CompositeView 中的 replace
參數:
index - 要插入新視圖的子視圖的開始索引;其值 >= 0 且 <= getViewCount
length - 要移除的現有子視圖數;其值 >= 0 且 <= (getViewCount() - offset)
elems - 要添加的子視圖;此值可以為 null,表示沒有要添加的子級(對移除有用)

forwardUpdate

protected void forwardUpdate(DocumentEvent.ElementChange ec,
                             DocumentEvent e,
                             Shape a,
                             ViewFactory f)
將給定的 DocumentEvent 轉發給需要接收模型更改通知的子視圖。如果有一個子級更改了它的要求並且在轉發前分派為有效,則框中從開始子級到框結束部分將被重新繪製。

覆寫:
類別 View 中的 forwardUpdate
參數:
ec - 此視圖負責的元素發生的更改(如果未發生更改,則為 null
e - 來自相關文檔的更改資訊
a - 視圖的當前分派
f - 重新建構時需要使用的處理器(如果視圖有子級)
從以下版本開始:
1.3
另請參見:
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)

preferenceChanged

public void preferenceChanged(View child,
                              boolean width,
                              boolean height)
這由子級來調用,以表明它的首選項區域已更改。實作此方法可丟棄快取記憶體佈局資訊,以便在子級下次需要分派時執行新的計算。

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

getResizeWeight

public int getResizeWeight(int axis)
獲取調整的權重。對於小於等於 0 的值,無法調整大小。

覆寫:
類別 View 中的 getResizeWeight
參數:
axis - 可以是 View.X_AXISView.Y_AXIS
返回:
權重
拋出:
IllegalArgumentException - 如果軸無效

setSize

public void setSize(float width,
                    float height)
設置視圖的大小。如果視圖快取記憶體了任何佈局資訊,此方法將對視圖佈局。實作此方法以調用佈局方法,調用參數為 insets 內部的大小。

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

paint

public void paint(Graphics g,
                  Shape allocation)
使用該面給定的呈現面和區域呈現 BoxView。只呈現與給定 Graphics 邊界相交的子級。

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

getChildAllocation

public Shape getChildAllocation(int index,
                                Shape a)
獲取給定子視圖的分派。這有助於獲得各個視圖所處的位置。實作此方法,如果佈局為無效,則返回 null,否則執行父級類別行為。

覆寫:
類別 CompositeView 中的 getChildAllocation
參數:
index - 子級的索引,該索引 >= 0 && < getViewCount()
a - 對此視圖的分派
返回:
對此子級的分派;或者,如果 anull 則返回 null;如果佈局無效,則返回 null

modelToView

public Shape modelToView(int pos,
                         Shape a,
                         Position.Bias b)
                  throws BadLocationException
提供從文檔模型的坐標空間到映射到它的視圖的坐標空間的映射。這確保在調用父級類別之前分派有效。

覆寫:
類別 CompositeView 中的 modelToView
參數:
pos - 要轉換的位置,其值 >= 0
a - 分派的要在其中呈現的區域
b - 一個偏移值,可以是 Position.Bias.ForwardPosition.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)
提供從視圖坐標空間到模型邏輯坐標空間的映射。

覆寫:
類別 CompositeView 中的 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[])

getAlignment

public float getAlignment(int axis)
確定此視圖沿某個軸所需的調整值。實作此方法可提供要將所有子級沿垂直平鋪軸的軸按對齊點排列所需的總調整值。要平鋪的軸將請求居中(即 0.5f)。

覆寫:
類別 View 中的 getAlignment
參數:
axis - 可以是 View.X_AXISView.Y_AXIS
返回:
所需的調整值,該值 >= 0.0f && <= 1.0f;它應該是一個介於 0.0 和 1.0 之間的值,0 表示在原點對齊,1.0 表示在離開原點的整個區域對齊;調整值為 0.5 表示視圖居中
拋出:
IllegalArgumentException - 如果軸無效

getPreferredSpan

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

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

getMinimumSpan

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

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

getMaximumSpan

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

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

isAllocationValid

protected boolean isAllocationValid()
子級分派是否仍有效。

返回:
如果分派仍有效,則返回 true

isBefore

protected boolean isBefore(int x,
                           int y,
                           Rectangle innerAlloc)
確定一個點是否位於分派區域的前面。

指定者:
類別 CompositeView 中的 isBefore
參數:
x - X 坐標,該坐標 >= 0
y - Y 坐標,該坐標 >= 0
innerAlloc - 已分派區域;這是 insets 內部的區域
返回:
如果該點位於區域的前面,則返回 true;否則返回 false

isAfter

protected boolean isAfter(int x,
                          int y,
                          Rectangle innerAlloc)
確定一個點是否位於分派區域的後面。

指定者:
類別 CompositeView 中的 isAfter
參數:
x - X 坐標,該坐標 >= 0
y - Y 坐標,該坐標 >= 0
innerAlloc - 已分派區域;這是 insets 內部的區域
返回:
如果該點位於區域的後面,則返回 true;否則返回 false

getViewAtPoint

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

指定者:
類別 CompositeView 中的 getViewAtPoint
參數:
x - X 坐標,該坐標 >= 0
y - Y 坐標,該坐標 >= 0
alloc - 父級在入口處的內部分派,在出口處應將更改為子級的分派
返回:
視圖

childAllocation

protected void childAllocation(int index,
                               Rectangle alloc)
為子視圖分派一個區域。

指定者:
類別 CompositeView 中的 childAllocation
參數:
index - 要為子視圖分派的索引,該索引 >= 0 && < getViewCount()
alloc - 分派的區域

layout

protected void layout(int width,
                      int height)
執行對框的佈局

參數:
width - insets 的內部寬度,該寬度 >= 0
height - insets 的內部高度,該高度 >= 0

getWidth

public int getWidth()
返回框的當前寬度。這是上次為其分派的寬度。

返回:
框的當前寬度

getHeight

public int getHeight()
返回框的當前高度。這是上次為其分派的高度。

返回:
框的當前高度

layoutMajorAxis

protected void layoutMajorAxis(int targetSpan,
                               int axis,
                               int[] offsets,
                               int[] spans)
執行對框的主軸的佈局(即它所代表的軸)。佈局的結果(每個子級的偏移量和區域)存儲在給定的陣列中,它表示沿主軸對子級的分派。

參數:
targetSpan - 分派給視圖的總區域,將用於佈置子級
axis - 要佈置的軸
offsets - 每個子視圖相對於視圖原點的偏移量;這是一個返回值,由此方法的實作填充
spans - 每個子視圖的區域;這是一個返回值,由此方法的實作填充

layoutMinorAxis

protected void layoutMinorAxis(int targetSpan,
                               int axis,
                               int[] offsets,
                               int[] spans)
執行對框的輔軸的佈局(即與它所代表的軸垂直的軸)。佈局的結果(每個子級的偏移量和區域)存儲在給定的陣列中,它表示沿輔軸對子級的分派。

參數:
targetSpan - 分派給視圖的總區域,將用於佈置子級
axis - 要佈置的軸
offsets - 每個子視圖相對於視圖原點的偏移量;這是一個返回值,由此方法的實作填充
spans - 每個子視圖的區域;這是一個返回值,由此方法的實作填充

calculateMajorAxisRequirements

protected SizeRequirements calculateMajorAxisRequirements(int axis,
                                                          SizeRequirements r)
計算主軸 axis 的大小要求。

參數:
axis - 所考察的軸
r - SizeRequirements 物件;如果為 null,將創建一個物件
返回:
新初始化的 SizeRequirements 物件
另請參見:
SizeRequirements

calculateMinorAxisRequirements

protected SizeRequirements calculateMinorAxisRequirements(int axis,
                                                          SizeRequirements r)
計算輔軸 axis 的大小要求。

參數:
axis - 所考察的軸
r - SizeRequirements 物件;如果為 null,將創建一個物件
返回:
新初始化的 SizeRequirements 物件
另請參見:
SizeRequirements

baselineLayout

protected void baselineLayout(int targetSpan,
                              int axis,
                              int[] offsets,
                              int[] spans)
在給定的 targetSpan 區域,即我們將使用的區域的寬度(或高度),計算每個子視圖在此 BoxView 中的位置和擴展。

參數:
targetSpan - 分派給視圖的總區域,將用於佈置子級
axis - 所考察的軸,可以是 View.X_AXISView.Y_AXIS
offsets - 一個空陣列,由此方法用指定每個子視圖位置的值填充
spans - 一個空陣列,由此方法用指定每個子視圖擴展的值填充

baselineRequirements

protected SizeRequirements baselineRequirements(int axis,
                                                SizeRequirements r)
通過檢查每個子視圖的大小計算此 BoxView 的大小要求。

參數:
axis - 所考察的軸
r - SizeRequirements 物件;如果為 null,將創建一個物件
返回:
新初始化的 SizeRequirements 物件

getOffset

protected int getOffset(int axis,
                        int childIndex)
獲取特定子級當前佈局的偏移量。

參數:
axis - 所考察的軸
childIndex - 所請求子級的索引
返回:
指定子級的偏移量(位置)

getSpan

protected int getSpan(int axis,
                      int childIndex)
獲取特定子級的當前佈局的區域。

參數:
axis - 所考察的軸
childIndex - 所請求子級的索引
返回:
指定子級的區域(寬度或高度)

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 按升序佈置。

如果接收者沿 Y_AXIS 佈置它的 View,這將返回在負責呈現 positionbiasView 上調用相同的方法所返回的值。否則將返回 false。

覆寫:
類別 CompositeView 中的 flipEastAndWestAtEnds
參數:
position - 模型中的位置
bias - 可以是 Position.Bias.ForwardPosition.Bias.Backward
返回:
如果圍繞 View 的負責呈現 positionbiasView 按降序佈置則返回 true;否則返回 false

JavaTM 2 Platform
Standard Ed. 6

提交錯誤或意見

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