java.lang.Object javax.swing.text.View javax.swing.text.CompositeView
public abstract class CompositeView
CompositeView
是一个管理着一个或多个子视图的抽象 View
实现。(注意,CompositeView
主要管理相对较少的子视图。)CompositeView
主要充当 View
实现的起点,例如 BoxView
,它将包含子 View
。要管理子 View
集的子类应使用 replace(int, int, javax.swing.text.View[])
方法。由于 View
在 DocumentListener
通知过程中调用 replace
,所以通常不需要直接调用 replace
。
虽然 CompositeView
不会对其子 View
施加布局策略,但它允许插入将包含的子 View
。插入内容可通过 setInsets(short, short, short, short)
或 setParagraphInsets(javax.swing.text.AttributeSet)
进行设置。
除了 View
的抽象方法之外,CompositeView
的子类还需要重写:
isBefore(int, int, java.awt.Rectangle)
- 用于测试给定的 View
位置是否位于 CompositeView
的可视空间之前。 isAfter(int, int, java.awt.Rectangle)
- 用于测试给定的 View
位置是否位于 CompositeView
的可视空间之后。 getViewAtPoint(int, int, java.awt.Rectangle)
- 返回位于给定可视位置的视图。 childAllocation(int, java.awt.Rectangle)
- 返回特定子 View
的边界。getChildAllocation
在其边界减去 CompositeView
的 Inset
之后,将调用 childAllocation
。
字段摘要 |
---|
从类 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) 提供从视图坐标空间到模型的逻辑坐标空间的映射。 |
从类 java.lang.Object 继承的方法 |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
构造方法详细信息 |
---|
public CompositeView(Element elem)
CompositeView
。
elem
- 此视图负责的元素
方法详细信息 |
---|
protected void loadChildren(ViewFactory f)
setParent(javax.swing.text.View)
方法调用。子类可重新实现它以便按不同的方式初始化其子视图。默认实现为每个子元素创建一个子视图。
f
- 视图工厂
setParent(javax.swing.text.View)
public void setParent(View parent)
loadChildren
方法。不应在构造方法中加载子级,因为设置父级的动作可能引起它们试图沿层次结构向上搜索,例如,要获得承载
Container
。如果此视图有子级(视图从视图层次结构中的一个位置移动到另一个位置),则不调用
loadChildren
方法。
parent
- 视图的父级,如果没有则为
null
public int getViewCount()
View
中的
getViewCount
getView(int)
public View getView(int n)
public void replace(int offset, int length, View[] views)
null
,并且移除了对它们的内部引用,所以它们有可能被作为垃圾回收。
offset
- 要插入新视图的子视图的起始索引;该索引 >= 0 且 <= getViewCount
length
- 要移除的现有子视图数;此值应 >= 0 且 <= (getViewCount() - offset)
views
- 要添加的子视图;此值可以为
null
,表示不添加任何子级(对移除有用)
public Shape getChildAllocation(int index, Shape a)
View
中的
getChildAllocation
index
- 子级的索引,该索引 >= 0 且 < getViewCount()
a
- 对此视图的分配区域
public Shape modelToView(int pos, Shape a, Position.Bias b) throws BadLocationException
View
中的
modelToView
pos
- 要转换的位置,该位置 >= 0
a
- 要在其中呈现的已分配区域
b
- 一个偏移值,可以是
Position.Bias.Forward
或
Position.Bias.Backward
BadLocationException
- 如果给定位置不是相关文档中的有效位置
View.modelToView(int, java.awt.Shape, javax.swing.text.Position.Bias)
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[])
public int viewToModel(float x, float y, Shape a, Position.Bias[] bias)
View
中的
viewToModel
x
- 要转换的视图位置的 x 坐标,该坐标 >= 0
y
- 要转换的视图位置的 y 坐标,该坐标 >= 0
a
- 要呈现的已分配区域
bias
- 可以是
Position.Bias.Forward
或
Position.Bias.Backward
View.viewToModel(float, float, java.awt.Shape, javax.swing.text.Position.Bias[])
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.Forward
或
Position.Bias.Backward
a
- 要呈现的已分配区域
direction
- 相对当前位置的方向,通常可视为键盘上看到的方向键;它可能为下列值之一:
SwingConstants.WEST
SwingConstants.EAST
SwingConstants.NORTH
SwingConstants.SOUTH
biasRet
- 一个包含已检查偏移量的数组
BadLocationException
IllegalArgumentException
- 如果
direction
无效
public int getViewIndex(int pos, Position.Bias b)
getViewIndexByPosition
方法以便向后兼容。
View
中的
getViewIndex
pos
- 位置,该位置 >= 0
protected abstract boolean isBefore(int x, int y, Rectangle alloc)
x
- X 坐标,该坐标 >= 0
y
- Y 坐标,该坐标 >= 0
alloc
- 矩形
protected abstract boolean isAfter(int x, int y, Rectangle alloc)
x
- X 坐标,该坐标 >= 0
y
- Y 坐标,该坐标 >= 0
alloc
- 矩形
protected abstract View getViewAtPoint(int x, int y, Rectangle alloc)
x
- X 坐标,该坐标 >= 0
y
- Y 坐标,该坐标 >= 0
alloc
- 入口处父级的分配区域,出口处应改为子级的分配区域
protected abstract void childAllocation(int index, Rectangle a)
index
- 子级的索引,该索引 >= 0 且 < getViewCount()
a
- 入口处框内部的分配区域,和出口索引处的子视图分配区域。
protected View getViewAtPosition(int pos, Rectangle a)
pos
- 位置,该位置 >= 0
a
- 入口处框内部的分配区域,出口处包含此位置的视图分配区域
null
protected int getViewIndexAtPosition(int pos)
pos
- 位置,该位置 >= 0
protected Rectangle getInsideAllocation(Shape a)
childAllocation
方法。
a
- 分配给视图的分配区域
null
,则返回值为
null
protected void setParagraphInsets(AttributeSet attr)
attr
- 属性
protected void setInsets(short top, short left, short bottom, short right)
top
- 顶部 inset,该值 >= 0
left
- 左部 inset,该值 >= 0
bottom
- 底部 inset,该值 >= 0
right
- 右部 inset,该值 >= 0
protected short getLeftInset()
protected short getRightInset()
protected short getTopInset()
protected short getBottomInset()
protected int getNextNorthSouthVisualPositionFrom(int pos, Position.Bias b, Shape a, int direction, Position.Bias[] biasRet) throws BadLocationException
pos
- 要转换的位置,该位置 >= 0
b
- 偏移量值,可以是
Position.Bias.Forward
或
Position.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[])
protected int getNextEastWestVisualPositionFrom(int pos, Position.Bias b, Shape a, int direction, Position.Bias[] biasRet) throws BadLocationException
pos
- 要转换的位置,该位置 >= 0
b
- 偏移量值,可以是
Position.Bias.Forward
或
Position.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[])
protected boolean flipEastAndWestAtEnds(int position, Position.Bias bias)
View
位于索引 n 处,通常
View
是从左向右放置的,所以在东面的
View
将位于索引 n