JavaTM 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 Platform
Standard Ed. 6

提交错误或意见
有关更多的 API 参考资料和开发人员文档,请参阅 Java SE 开发人员文档。该文档包含更详细的、面向开发人员的描述,以及总体概述、术语定义、使用技巧和工作代码示例。

版权所有 2007 Sun Microsystems, Inc. 保留所有权利。 请遵守许可证条款。另请参阅文档重新分发政策