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

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

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