java.lang.Object
javax.swing.text.View
javax.swing.text.CompositeView
- 所有已实现的接口:
-
SwingConstants
- 直接已知的子类:
-
BoxView
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
。
-
Field Summary
Fields declared in class javax.swing.text.View
BadBreakWeight, ExcellentBreakWeight, ForcedBreakWeight, GoodBreakWeight, X_AXIS, Y_AXIS
Fields declared in interface 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
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionprotected abstract void
childAllocation
(int index, Rectangle a) 返回给定子视图的分配。protected boolean
flipEastAndWestAtEnds
(int position, Position.Bias bias) 确定下一个视图的方向。protected short
获取底部插入。getChildAllocation
(int index, Shape a) 获取给定子视图的分配以进行渲染。protected Rectangle
将给定视图的不可变分配转换为表示内部分配的可变分配(即给定分配的边界,去除顶部、左侧、底部和右侧插入)。protected short
获取左侧插入。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
获取右侧插入。protected short
获取顶部插入。getView
(int n) 返回此容器中的第n个视图。protected abstract View
getViewAtPoint
(int x, int y, Rectangle alloc) 获取给定坐标处的子视图。protected View
getViewAtPosition
(int pos, Rectangle a) 获取表示模型中给定位置的子视图。int
返回此视图的子视图数量。int
getViewIndex
(int pos, Position.Bias b) 返回表示模型中给定位置的子视图索引。protected int
getViewIndexAtPosition
(int pos) 获取表示模型中给定位置的子视图索引。protected abstract boolean
测试点是否位于矩形范围之后。protected abstract boolean
测试点是否位于矩形范围之前。protected void
加载所有子项以初始化视图。modelToView
(int pos, Shape a, Position.Bias b) 提供从文档模型坐标空间到其映射视图的坐标空间的映射。modelToView
(int p0, Position.Bias b0, int p1, Position.Bias b1, Shape a) 提供从文档模型坐标空间到其映射视图的坐标空间的映射。void
替换子视图。protected void
setInsets
(short top, short left, short bottom, short right) 设置视图的插入。protected void
从给定属性中指定的段落属性设置插入。void
设置视图的父级。int
viewToModel
(float x, float y, Shape a, Position.Bias[] bias) 提供从视图坐标空间到模型的逻辑坐标空间的映射。Methods declared in class 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
-
Constructor Details
-
CompositeView
为给定元素构造一个CompositeView
。- 参数:
-
elem
- 负责此视图的元素
-
-
Method Details
-
loadChildren
加载所有子项以初始化视图。这由setParent(javax.swing.text.View)
方法调用。子类可以重新实现此方法以不同的方式初始化其子视图。默认实现为每个子元素创建一个子视图。- 参数:
-
f
- 视图工厂 - 参见:
-
setParent
设置视图的父级。这被重新实现以提供超类行为,并在此视图尚未具有子项时调用loadChildren
方法。不应在构造函数中加载子项,因为设置父级可能导致它们尝试搜索层次结构(例如,获取托管Container
)。如果此视图具有子项(将视图从视图层次结构中的一个位置移动到另一个位置),则不会调用loadChildren
方法。 -
getViewCount
public int getViewCount()返回此视图的子视图数量。- 覆盖:
-
getViewCount
在类View
中 - 返回:
- 视图数量 >= 0
- 参见:
-
getView
返回此容器中的第n个视图。 -
replace
替换子视图。如果没有要移除的视图,则此操作将充当插入操作。如果没有要添加的视图,则此操作将充当移除操作。将要移除的视图的父级设置为null
,并删除对它们的内部引用,以便它们可以被垃圾回收。 -
getChildAllocation
获取给定子视图的分配以进行渲染。这使得可以找出各种视图的位置。- 覆盖:
-
getChildAllocation
在类View
中 - 参数:
-
index
- 子视图的索引,>= 0 && < getViewCount() -
a
- 分配给此视图的分配 - 返回:
- 子视图的分配
-
modelToView
提供从文档模型坐标空间到其映射视图的坐标空间的映射。- 指定者:
-
modelToView
在类View
中 - 参数:
-
pos
- 要转换的位置 >= 0 -
a
- 要渲染到的分配区域 -
b
-Position.Bias.Forward
或Position.Bias.Backward
的偏移值 - 返回:
- 给定位置的边界框
- 抛出:
-
BadLocationException
- 如果给定位置在关联文档中不表示有效位置 - 参见:
-
modelToView
public Shape modelToView(int p0, Position.Bias b0, int p1, Position.Bias b1, Shape a) throws BadLocationException 提供从文档模型坐标空间到其映射视图的坐标空间的映射。- 覆盖:
-
modelToView
在类View
中 - 参数:
-
p0
- 要转换的位置 >= 0 -
b0
- 与由p0表示的前一个字符或下一个字符的偏好,如果位置是两个视图的边界,则为Position.Bias.Forward
或Position.Bias.Backward
-
p1
- 要转换的位置 >= 0 -
b1
- 与由p1表示的前一个字符或下一个字符的偏好,如果位置是两个视图的边界 -
a
- 要渲染的分配区域 - 返回:
- 返回给定位置的边界框
- 抛出:
-
BadLocationException
- 如果给定位置不表示关联文档中的有效位置 -
IllegalArgumentException
- 对于无效的偏好参数 - 参见:
-
viewToModel
提供了从视图坐标空间到模型的逻辑坐标空间的映射。- 指定者:
-
viewToModel
在类View
中 - 参数:
-
x
- 要转换的视图位置的x坐标 >= 0 -
y
- 要转换的视图位置的y坐标 >= 0 -
a
- 要渲染的分配区域 -
bias
- 要么是Position.Bias.Forward
,要么是Position.Bias.Backward
- 返回:
- 最好表示视图中给定点的模型位置 >= 0
- 参见:
-
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[])
的便利方法。此方法使得可以在范围内指定要转换的位置。如果值为-1,则将自动计算位置。如果值< -1,则将抛出BadLocationException
。- 覆盖:
-
getNextVisualPositionFrom
在类View
中 - 参数:
-
pos
- 要转换的位置 -
b
- 一个偏好值,要么是Position.Bias.Forward
,要么是Position.Bias.Backward
-
a
- 要渲染的分配区域 -
direction
- 从当前位置开始的方向,可以认为是键盘上通常找到的箭头键; 这可能是以下之一:SwingConstants.WEST
SwingConstants.EAST
SwingConstants.NORTH
SwingConstants.SOUTH
-
biasRet
- 包含已检查的偏好的数组 - 返回:
- 最好表示下一个位置视觉位置的模型位置
- 抛出:
-
BadLocationException
- 给定位置不是文档中的有效位置 -
IllegalArgumentException
- 如果direction
无效
-
getViewIndex
返回表示模型中给定位置的子视图索引。这是为了向后兼容而实现的,调用getViewIndexByPosition
方法。- 覆盖:
-
getViewIndex
在类View
中 - 参数:
-
pos
- 位置 >= 0 -
b
- 偏好 - 返回:
- 表示给定位置的视图的索引,如果没有视图表示该位置,则返回-1
- 自:
- 1.3
-
isBefore
测试一个点是否位于矩形范围之前。- 参数:
-
x
- X坐标 >= 0 -
y
- Y坐标 >= 0 -
alloc
- 矩形 - 返回:
- 如果点在指定范围之前,则为true
-
isAfter
测试一个点是否位于矩形范围之后。- 参数:
-
x
- X坐标 >= 0 -
y
- Y坐标 >= 0 -
alloc
- 矩形 - 返回:
- 如果点在指定范围之后,则为true
-
getViewAtPoint
获取给定坐标处的子视图。- 参数:
-
x
- X坐标 >= 0 -
y
- Y坐标 >= 0 -
alloc
- 父分配在进入时,应在退出时更改为子分配 - 返回:
- 子视图
-
childAllocation
返回给定子视图的分配。- 参数:
-
index
- 子视图的索引,>= 0 && < getViewCount() -
a
- 进入时盒子内部的分配,退出时为索引处的子视图的分配。
-
getViewAtPosition
获取表示模型中给定位置的子视图。这是为了在每个子元素都有一个子视图的情况下获取视图而实现的。- 参数:
-
pos
- 位置 >= 0 -
a
- 进入时盒子内部的分配,退出时包含位置的视图的分配 - 返回:
-
表示给定位置的视图,如果没有则为
null
-
getViewIndexAtPosition
protected int getViewIndexAtPosition(int pos) 获取表示模型中给定位置的子视图索引。这是为了在每个子元素都有一个子视图的情况下获取视图而实现的。- 参数:
-
pos
- 位置 >= 0 - 返回:
- 表示给定位置的视图的索引,如果没有视图表示该位置,则返回-1
-
getInsideAllocation
将给定视图的不可变分配转换为表示内部分配的可变分配(即给定分配的边界,去除顶部、左侧、底部和右侧的插图)。预期返回的值将进一步变异以表示对子视图的分配。这是为了重用一个实例变量,因此避免创建过多的矩形。通常调用此方法的结果将被传递给childAllocation
方法。- 参数:
-
a
- 给定给视图的分配 - 返回:
-
表示去除所有边距后视图内部的分配; 如果给定的分配为
null
,则返回值为null
-
setParagraphInsets
根据给定属性中指定的段落属性设置插图。- 参数:
-
attr
- 属性
-
setInsets
protected void setInsets(short top, short left, short bottom, short right) 为视图设置插图。- 参数:
-
top
- 顶部插图 >= 0 -
left
- 左侧插图 >= 0 -
bottom
- 底部插图 >= 0 -
right
- 右侧插图 >= 0
-
getLeftInset
protected short getLeftInset()获取左侧插图。- 返回:
- 插图 >= 0
-
getRightInset
protected short getRightInset()获取右侧插图。- 返回:
- 插图 >= 0
-
getTopInset
protected short getTopInset()获取顶部插图。- 返回:
- 插图 >= 0
-
getBottomInset
protected short getBottomInset()获取底部插图。- 返回:
- 插图 >= 0
-
getNextNorthSouthVisualPositionFrom
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
无效 - 参见:
-
getNextEastWestVisualPositionFrom
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
无效 - 参见:
-
flipEastAndWestAtEnds
确定下一个视图所在的方向。考虑索引为n的View
。通常,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.Forward
或Position.Bias.Backward
- 返回:
- false
-