- 所有已实现的接口:
-
SwingConstants
- 直接已知的子类:
-
AsyncBoxView
,ComponentView
,CompositeView
,GlyphView
,IconView
,ImageView
,PlainView
文本包的一个非常重要的部分是View
类。顾名思义,它代表文本模型的一个视图,或者说是文本模型的一部分。这个类负责文本组件的外观。视图并不是一个完全新的需要学习的东西,而更像是一个轻量级组件。
默认情况下,视图非常轻量。它包含一个对父视图的引用,可以从中获取许多内容而不需要保持状态,并且包含对模型的一部分(Element
)的引用。视图不一定要精确地表示模型中的一个元素,这只是一种典型且方便的映射。视图还可以维护一对Position对象,以维护其在模型中的位置(即表示元素的片段)。这通常是格式化的结果,其中视图已被拆分为片段。与元素有着重要关系的便利性使得更容易构建工厂来生成视图,并且更容易跟踪视图片段随着模型的更改而发生变化,视图必须随着模型的变化而变化以反映模型。因此,简单视图直接表示一个元素,而复杂视图则不是。
视图有以下职责:
- 参与布局。
-
视图有一个
setSize
方法,类似于Component
中的doLayout
和setSize
的结合。视图有一个preferenceChanged
方法,类似于Component
中的invalidate
,只是可以仅使一个轴无效,并且可以标识请求更改的子级。视图以三个值表示其希望的大小,即最小、首选和最大跨度。视图中的布局可以独立于每个轴进行。对于一个正常工作的视图实现,最小跨度应该小于等于首选跨度,而首选跨度又应该小于等于最大跨度。
布局的最小方法集包括:
setSize
方法应该准备好被多次调用(即使大小没有改变也可能被调用)。通常会调用setSize
方法以确保视图布局在尝试执行需要最新布局的操作之前已经完成。视图的大小应始终设置为在该视图指定的最小和最大跨度之内的值。此外,如果视图已更改其希望的布局值并且期望父级视图遵守这些值,视图必须始终在父级上调用preferenceChanged
方法。父视图不需要在发送preferenceChanged
之前识别更改。这允许父视图实现根据需要缓存子级要求。调用顺序看起来像下面这样: - 渲染模型的一部分。
-
View
对于渲染有以下语义:- 视图在绘制时从父级获取其分配,因此必须准备好重新布局,如果分配的区域与其准备处理的区域不同。
- 坐标系与承载
Component
相同(即getContainer
方法返回的Component
)。这意味着子视图与父视图生活在相同的坐标系中,除非父视图明确更改了坐标系。要安排自己重新绘制,视图可以在承载Component
上调用repaint。 - 默认情况下,不裁剪子级。只有在视图确实需要裁剪时,才允许视图进行裁剪。
- 给定的
Graphics
对象没有以任何方式初始化。视图应设置所需的任何设置。 View
本质上是透明的。虽然视图可以渲染其整个分配,但通常视图不会这样做。渲染是通过遍历View
实现树来执行的。每个View
负责渲染其子级。这种行为依赖于线程安全性。虽然视图实现不一定要考虑线程安全性,但其他利用并发的视图实现可以依赖于树遍历来保证线程安全性。- 相对于模型的视图顺序取决于实现。虽然子视图通常按照它们在模型中出现的顺序排列,但它们在视觉上可能以完全不同的顺序排列。如果子级重叠,视图实现可能与之关联Z顺序。
- 在模型和视图坐标系之间进行转换。
-
DocumentEvent
从模型广播更改时,转换是无效的,不应尝试。 - 响应来自模型的更改。
-
DocumentListener
将是不切实际的。如果每个视图都监听模型,那么在任何给定时间,只有少数视图实际上会对广播的更改感兴趣。由于模型对视图没有任何了解,因此无法过滤更改信息的广播。相反,视图层次结构本身负责传播更改信息。在视图层次结构的任何级别,该视图对其子级有足够的了解,以最佳地进一步分发更改信息。因此,更改从视图层次结构的根开始广播。执行此操作的方法包括:
-
Field Summary
Modifier and TypeFieldDescriptionstatic final int
用于指示视图是一个不良的断点机会以进行格式化。static final int
用于指示视图支持断点,并且这表示一个非常有吸引力的断点位置。static final int
用于指示视图支持断点,并且必须在放置在通过断点对其子级进行格式化的视图中时才能正确表示。static final int
用于指示视图支持断点,但可能存在更好的机会。static final int
用于格式/断点操作的轴。static final int
用于格式/断点操作的轴。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 TypeMethodDescriptionvoid
添加一个单个子视图。breakView
(int axis, int offset, float pos, float len) 尝试在给定轴上断开此视图。void
changedUpdate
(DocumentEvent e, Shape a, ViewFactory f) 从文档中提供通知,指示此视图负责的位置发生了属性更改。createFragment
(int p0, int p1) 创建表示元素部分的视图。protected void
将给定的DocumentEvent
转发给需要通知模型更改的子视图。protected void
forwardUpdateToView
(View v, DocumentEvent e, Shape a, ViewFactory f) 将DocumentEvent
转发给给定的子视图。float
getAlignment
(int axis) 确定此视图沿轴线的期望对齐方式。获取用于渲染的属性。int
getBreakWeight
(int axis, float pos, float len) 确定此视图中断点机会的吸引力程度。getChildAllocation
(int index, Shape a) 获取给定子视图的分配。获取承载视图的容器。获取与视图关联的模型。获取此视图映射到的主题的结构部分。int
获取此视图负责的模型部分。获取用于渲染的Graphics
。float
getMaximumSpan
(int axis) 确定沿轴的最大跨度。float
getMinimumSpan
(int axis) 确定沿轴的最小跨度。int
getNextVisualPositionFrom
(int pos, Position.Bias b, Shape a, int direction, Position.Bias[] biasRet) 提供一种方法来确定下一个可能放置插入符号的视觉表示模型位置。返回视图的父级。abstract float
getPreferredSpan
(int axis) 确定沿轴的首选跨度。int
getResizeWeight
(int axis) 确定视图沿给定轴的可调整性。int
获取该视图负责的模型部分。getToolTipText
(float x, float y, Shape allocation) 返回指定位置的工具提示文本。getView
(int n) 获取第n个子视图。int
返回此视图中的视图数量。获取提供视图层次结构的ViewFactory实现。int
getViewIndex
(float x, float y, Shape allocation) 返回表示视图中给定位置的子视图索引。int
getViewIndex
(int pos, Position.Bias b) 返回表示模型中给定位置的子视图索引。void
插入单个子视图。void
insertUpdate
(DocumentEvent e, Shape a, ViewFactory f) 通知在此视图负责的位置插入了文档中的内容。boolean
返回一个布尔值,指示视图是否可见。默认情况下,所有视图都是可见的。modelToView
(int pos, Shape a) 已弃用。abstract Shape
modelToView
(int pos, Shape a, Position.Bias b) 为给定字符提供从文档模型坐标空间到视图坐标空间的映射。modelToView
(int p0, Position.Bias b0, int p1, Position.Bias b1, Shape a) 为给定区域提供从文档模型坐标空间到视图坐标空间的映射。abstract void
使用给定的渲染表面和该表面上的区域进行渲染。void
preferenceChanged
(View child, boolean width, boolean height) 子视图可以调用此方法通知父级偏好已更改,并应重新考虑布局。默认情况下,这只是向上传播到下一个父级。根视图将在关联的文本组件上调用revalidate
。void
remove
(int i) 删除给定位置的一个子视图。void
删除所有子视图。void
removeUpdate
(DocumentEvent e, Shape a, ViewFactory f) 通知在此视图负责的位置从文档中删除了内容。void
替换子视图。void
为此视图建立父视图。void
setSize
(float width, float height) 设置视图的大小。protected boolean
在接收到模型更改通知并且有关此视图负责的元素的更改记录时,更新子视图。protected void
在从模型接收到更改通知时,更新布局。int
viewToModel
(float x, float y, Shape a) 已弃用。abstract int
viewToModel
(float x, float y, Shape a, Position.Bias[] biasReturn) 为视图坐标空间提供到模型的逻辑坐标空间的映射。
-
Field Details
-
BadBreakWeight
public static final int BadBreakWeight用于指示视图作为格式化的糟糕断点机会的权重。此值表示不应尝试将视图分解为片段,因为该视图未编写以支持分段。- 参见:
-
GoodBreakWeight
public static final int GoodBreakWeight用于指示视图支持断开,但可能存在更好的机会的权重。- 参见:
-
ExcellentBreakWeight
public static final int ExcellentBreakWeight用于指示视图支持断开,并且这表示一个非常有吸引力的断开位置的权重。- 参见:
-
ForcedBreakWeight
public static final int ForcedBreakWeight用于指示视图支持断开,并且必须断开才能在格式化其子视图的视图中正确表示时才能表示的权重。- 参见:
-
X_AXIS
public static final int X_AXIS格式/断开操作的轴。- 参见:
-
Y_AXIS
public static final int Y_AXIS格式/断开操作的轴。- 参见:
-
-
Constructor Details
-
View
创建一个新的View
对象。- 参数:
-
elem
- 要表示的Element
-
-
Method Details
-
getParent
返回视图的父级。- 返回:
-
父级,如果不存在则返回
null
-
isVisible
public boolean isVisible()返回一个布尔值,指示视图是否可见。默认情况下,所有视图都是可见的。- 返回:
- 始终返回true
-
getPreferredSpan
public abstract float getPreferredSpan(int axis) 确定沿轴的首选跨度。- 参数:
-
axis
- 可以是View.X_AXIS
或View.Y_AXIS
- 返回:
- 视图希望呈现的跨度。通常会告诉视图呈现返回的跨度,尽管不能保证。父级可能选择调整大小或断开视图
-
getMinimumSpan
public float getMinimumSpan(int axis) 确定沿轴的最小跨度。- 参数:
-
axis
- 可以是View.X_AXIS
或View.Y_AXIS
- 返回:
- 视图可以呈现的最小跨度
- 参见:
-
getMaximumSpan
public float getMaximumSpan(int axis) 确定沿轴的最大跨度。- 参数:
-
axis
- 可以是View.X_AXIS
或View.Y_AXIS
- 返回:
- 视图可以呈现的最大跨度
- 参见:
-
preferenceChanged
子视图可以调用此方法通知父级偏好已更改,并应重新考虑布局。默认情况下,这只是向上传播到下一个父级。根视图将在关联的文本组件上调用revalidate
。- 参数:
-
child
- 子视图 -
width
- 如果宽度偏好已更改,则为true -
height
- 如果高度偏好已更改,则为true - 参见:
-
getAlignment
public float getAlignment(int axis) 确定沿轴的视图所需的对齐方式。返回所需的对齐方式。这应该是一个值>= 0.0且<= 1.0,其中0表示在原点对齐,1.0表示在原点远离全跨度对齐。对齐值为0.5将是视图的中心。- 参数:
-
axis
- 可以是View.X_AXIS
或View.Y_AXIS
- 返回:
- 值为0.5
-
paint
使用给定的渲染表面和该表面上的区域进行渲染。视图可能需要进行布局并创建子视图,以使自身能够呈现到给定的分配中。- 参数:
-
g
- 要使用的渲染表面 -
allocation
- 要呈现到的分配区域
-
setParent
为此视图建立父视图。如果父视图正常运行,则保证在任何其他方法之前调用此方法。这也是最后一个调用的方法,因为它被调用以指示视图已从层次结构中删除。当调用此方法将父级设置为null时,此方法会对其每个子视图执行相同操作,传播它们已从视图树中断开的通知。如果重新实现此方法,应调用super.setParent()
。- 参数:
-
parent
- 新的父级,如果视图正在从父级中移除,则为null
-
getViewCount
public int getViewCount()返回此视图中的视图数量。由于默认情况下不是复合视图,因此返回0。- 返回:
- 视图数量>= 0
-
getView
获取第n个子视图。由于默认情况下没有子视图,因此返回null
。- 参数:
-
n
- 要获取的视图编号,>= 0 && < getViewCount() - 返回:
- 视图
-
removeAll
public void removeAll()删除所有子视图。这是一个方便调用replace
。- 自1.3起
-
remove
public void remove(int i) 删除给定位置的一个子视图。这是一个方便调用replace
。- 参数:
-
i
- 位置 - 自1.3版本起:
- 1.3
-
insert
插入单个子视图。这是一个方便调用replace
。- 参数:
-
offs
- 要插入的视图之前的偏移量 >= 0 -
v
- 视图 - 自1.3版本起:
- 1.3
- 参见:
-
append
追加单个子视图。这是一个方便调用replace
。- 参数:
-
v
- 视图 - 自1.3版本起:
- 1.3
- 参见:
-
replace
替换子视图。如果没有要移除的视图,则此操作将充当插入操作。如果没有要添加的视图,则此操作将充当移除操作。被移除的视图的父级将设置为null
,并且对它们的内部引用将被移除,以便它们可以被垃圾回收。这被实现为不执行任何操作,因为默认情况下视图没有子视图。- 参数:
-
offset
- 要插入新视图的子视图的起始索引。这应该是一个值 >= 0 且 <= getViewCount -
length
- 要移除的现有子视图的数量。这应该是一个值 >= 0 且 <= (getViewCount() - offset)。 -
views
- 要添加的子视图。此值可以为null
,表示不添加任何子视图(有助于移除)。 - 自1.3版本起:
- 1.3
-
getViewIndex
返回表示模型中给定位置的子视图索引。默认情况下,视图没有子视图,因此实现为返回-1,表示没有任何有效的子索引与任何位置对应。- 参数:
-
pos
- 位置 >= 0 -
b
- 偏移 - 返回:
- 表示给定位置的视图的索引,如果没有视图表示该位置,则返回-1
- 自1.3版本起:
- 1.3
-
getChildAllocation
获取给定子视图的分配。这使得可以找出各种视图的位置,而不假定视图如何存储它们的位置。由于默认情况下没有任何子视图,因此返回null
。- 参数:
-
index
- 子视图的索引,>= 0 && <getViewCount()
-
a
- 分配给此视图的区域 - 返回:
- 子视图的分配
-
getNextVisualPositionFrom
public int getNextVisualPositionFrom(int pos, Position.Bias b, Shape a, int direction, Position.Bias[] biasRet) throws BadLocationException 提供一种确定下一个在视觉上表示的模型位置,可以在其中放置插入符号的方法。某些视图可能不可见,它们可能不按照在模型中找到的顺序排列,或者它们可能根本不允许访问模型中的某些位置。此方法使得可以指定要在范围内转换的位置,如果值为-1,则将自动计算位置。如果值< -1,则将抛出BadLocationException
。- 参数:
-
pos
- 要转换的位置 -
b
- 偏移 -
a
- 要呈现的分配区域 -
direction
- 从当前位置开始的方向,可以被视为通常在键盘上找到的箭头键。这将是以下值之一:- SwingConstants.WEST
- SwingConstants.EAST
- SwingConstants.NORTH
- SwingConstants.SOUTH
-
biasRet
- 返回的偏移 - 返回:
- 在模型中最好表示下一个位置视觉位置的位置
- 抛出:
-
BadLocationException
- 给定位置不是文档中的有效位置 -
IllegalArgumentException
- 如果direction
不具有上述合法值之一
-
modelToView
为给定字符提供从文档模型坐标空间到视图坐标空间的映射。- 参数:
-
pos
- 所需字符的位置(>=0) -
a
- 视图的区域,包含请求的字符 -
b
- 朝向前一个字符或下一个字符的偏移,如果位置是两个视图边界之间的边界,则b
将具有以下值之一:Position.Bias.Forward
Position.Bias.Backward
- 返回:
- 指定位置处字符的边界框,在视图坐标空间中
- 抛出:
-
BadLocationException
- 如果指定位置在关联文档中不表示有效位置 -
IllegalArgumentException
- 如果b
不是上述合法Position.Bias
值之一 - 参见:
-
modelToView
public Shape modelToView(int p0, Position.Bias b0, int p1, Position.Bias b1, Shape a) throws BadLocationException 为给定区域提供从文档模型坐标空间到视图坐标空间的映射。指定的区域被创建为第一个和最后一个字符位置的并集。- 参数:
-
p0
- 第一个字符的位置(>=0) -
b0
- 第一个字符位置的偏移,朝向前一个字符或下一个字符的偏移,如果位置是两个视图边界之间的边界,则b0
将具有以下值之一:Position.Bias.Forward
Position.Bias.Backward
-
p1
- 最后一个字符的位置(>=0) -
b1
- 第二个字符位置的偏移,定义为上述合法值之一 -
a
- 包含请求区域的视图的区域 - 返回:
- 边界框,是由第一个和最后一个字符位置指定的区域的并集
- 抛出:
-
BadLocationException
- 如果给定位置在关联文档中不表示有效位置 -
IllegalArgumentException
- 如果b0
或b1
不是上述合法Position.Bias
值之一 - 参见:
-
viewToModel
提供从视图坐标空间到模型的逻辑坐标空间的映射。将填充biasReturn
参数,以指示给定点是更接近模型中的下一个字符还是上一个字符。- 参数:
-
x
- X坐标 >= 0 -
y
- Y坐标 >= 0 -
a
- 要呈现的分配区域 -
biasReturn
- 返回的偏移 - 返回:
-
在视图中最能表示给定点的模型位置 >= 0。将填充
biasReturn
参数,以指示给定点是更接近模型中的下一个字符还是上一个字符。
-
insertUpdate
通知在文档中插入了此视图负责的位置。为了减轻子类的负担,此功能分散到以下调用中,子类可以重新实现:updateChildren
在此视图负责的元素发生任何更改时调用。如果此视图具有代表子元素的子视图,则此方法应执行确保子视图正确表示模型所需的任何操作。forwardUpdate
用于将DocumentEvent转发到适当的子视图。updateLayout
用于让视图有机会修复其布局、重新安排布局或不执行任何操作。
- 参数:
-
e
- 与关联文档的更改信息 -
a
- 视图的当前分配 -
f
- 如果视图具有子视图,则用于重建的工厂 - 参见:
-
removeUpdate
给出通知,说明文档中的某些内容已从此视图负责的位置中删除。为了减轻子类的负担,此功能分散到以下调用中,子类可以重新实现:updateChildren
如果此视图负责的元素发生任何更改,则会调用。如果此视图具有代表子元素的子视图,则此方法应执行必要的操作,以确保子视图正确表示模型。forwardUpdate
用于将DocumentEvent转发给适当的子视图。updateLayout
用于让视图有机会修复其布局,重新安排布局或不执行任何操作。
- 参数:
-
e
- 关联文档中的更改信息 -
a
- 视图的当前分配 -
f
- 如果视图具有子视图代表子元素,则用于重建的工厂 - 参见:
-
changedUpdate
来自文档的通知,说明此视图负责的位置中的属性已更改。为了减轻子类的负担,此功能分散到以下调用中,子类可以重新实现:updateChildren
如果此视图负责的元素发生任何更改,则会调用。如果此视图具有代表子元素的子视图,则此方法应执行必要的操作,以确保子视图正确表示模型。forwardUpdate
用于将DocumentEvent转发给适当的子视图。updateLayout
用于让视图有机会修复其布局,重新安排布局或不执行任何操作。
- 参数:
-
e
- 关联文档中的更改信息 -
a
- 视图的当前分配 -
f
- 如果视图具有子视图代表子元素,则用于重建的工厂 - 参见:
-
getDocument
获取与视图关联的模型。- 返回:
-
视图模型,如果没有则为
null
-
getStartOffset
public int getStartOffset()获取此视图负责的模型部分。- 返回:
- 模型中的起始偏移量 >= 0
- 参见:
-
getEndOffset
public int getEndOffset()获取此视图负责的模型部分。- 返回:
- 模型中的结束偏移量 >= 0
- 参见:
-
getElement
获取此视图映射到的主题的结构部分。视图可能不负责元素的整个部分。- 返回:
- 主题
-
getGraphics
获取用于渲染的Graphics
。这可用于确定字体特性,并且对于打印视图与组件视图可能不同。- 返回:
-
用于渲染的
Graphics
对象 - 自:
- 1.3
-
getAttributes
获取用于渲染的属性。默认情况下,这只是返回关联元素的属性。应该使用此方法而不是直接使用元素来获取属性,以允许混合视图特定属性或允许视图通过子类具有视图特定属性转换。每个视图应记录其用于渲染或布局目的的属性,并且应始终通过此方法返回的AttributeSet
访问它们。- 返回:
- 用于渲染的属性
-
breakView
尝试在给定轴上中断此视图。这由试图对其子项进行格式化的视图调用。例如,段落视图通常会尝试将其子项放入行中,表示文本块的视图有时可以分解为更小的片段。此实现返回视图本身,表示默认行为是不可中断的。如果视图支持中断,则返回视图的起始偏移量应为给定偏移量,并且结束偏移量应小于或等于要中断的视图的结束偏移量。
- 参数:
-
axis
- 可能是View.X_AXIS
或View.Y_AXIS
-
offset
- 文档模型中断片段将占用的位置 >= 0。这将是返回的片段的起始偏移量 -
pos
- 中断视图将占用的轴上的位置 >= 0。这可能对诸如制表符计算之类的事情有用 -
len
- 指定沿轴的距离,其中希望进行潜在中断 >= 0 - 返回:
- 表示给定跨度的视图片段,如果视图可以中断。如果视图不支持中断行为,则返回视图本身。
- 参见:
-
createFragment
创建表示元素部分的视图。在格式化操作期间,这可能对于测量视图片段很有用。如果视图不支持分段(默认情况),则应返回自身。- 参数:
-
p0
- 起始偏移量 >= 0。这应该是大于或等于元素起始偏移量且小于元素结束偏移量的值。 -
p1
- 结束偏移量 > p0。这应该是小于或等于元素结束偏移量且大于元素起始偏移量的值。 - 返回:
- 视图片段,如果视图不支持分段,则为自身
- 参见:
-
getBreakWeight
public int getBreakWeight(int axis, float pos, float len) 确定此视图中断机会的吸引力。这可用于确定在格式化过程中调用breakView
的最有吸引力的视图。例如,表示其中包含空格的文本的视图可能比没有空格的视图更有吸引力。权重越高,中断越有吸引力。权重等于或低于BadBreakWeight
的值不应考虑中断。大于或等于ForcedBreakWeight
的值应中断。此实现提供了默认行为,即除非长度大于视图的长度,否则返回
BadBreakWeight
。除非视图已编写以支持中断行为,否则尝试中断视图是没有吸引力的。支持中断的视图示例是LabelView
。使用中断权重的视图示例是ParagraphView
。- 参数:
-
axis
- 可能是View.X_AXIS
或View.Y_AXIS
-
pos
- 中断视图起始位置的潜在位置 >= 0。这可能对计算制表位点等事情有用 -
len
- 指定从pos的相对长度开始希望进行中断的位置 >= 0 - 返回:
- 权重,应该是介于ForcedBreakWeight和BadBreakWeight之间的值
- 参见:
-
getResizeWeight
public int getResizeWeight(int axis) 确定视图沿给定轴的可调整大小性。值为0或更低表示不可调整大小。- 参数:
-
axis
- 可能是View.X_AXIS
或View.Y_AXIS
- 返回:
- 权重
-
setSize
public void setSize(float width, float height) 设置视图的大小。如果视图有任何布局职责,这应该导致沿给定轴的视图布局。- 参数:
-
width
- 宽度 >= 0 -
height
- 高度 >= 0
-
getContainer
获取承载视图的容器。这对于诸如安排重绘、查找主机组件的字体等事项很有用。此默认实现是将查询转发给父视图。- 返回值:
-
容器,如果没有则为
null
-
getViewFactory
获取正在提供视图层次结构的ViewFactory
实现。通常,当视图最有可能需要工厂时,视图会在从模型更新时将其作为参数传递,但此方法可在其他时间提供它。- 返回值:
-
工厂,如果没有则为
null
-
getToolTipText
返回指定位置的工具提示文本。默认实现返回由传入位置标识的子视图的值。- 参数:
-
x
- x坐标 -
y
- y坐标 -
allocation
- 视图的当前分配 - 返回值:
- 指定位置的工具提示文本
- 自版本:
- 1.4
- 参见:
-
getViewIndex
返回表示视图中给定位置的子视图索引。这会遍历所有子视图,返回第一个包含x
,y
的边界的子视图。- 参数:
-
x
- x坐标 -
y
- y坐标 -
allocation
- 视图的当前分配 - 返回值:
- 表示给定位置的视图的索引,如果没有视图表示该位置则返回-1
- 自版本:
- 1.4
-
updateChildren
在接收到模型更改通知并且该视图负责的元素有更改记录时,更新子视图。此方法被实现为假定子视图直接负责该视图代表的元素的子元素。使用ViewFactory
为在给定的ElementChange
中指定为添加的每个元素创建子视图,从给定的索引开始。表示已删除的元素的子视图数量将被移除。- 参数:
-
ec
- 负责的元素的更改信息。如果调用此方法,则此参数不应为null
-
e
- 与关联文档的更改信息 -
f
- 用于构建子视图的工厂 - 返回值:
- 子视图是否表示该视图负责的子元素。某些视图创建代表其负责的元素一部分的子视图,应返回false。此信息用于确定是否应将添加元素范围内的视图转发或不转发
- 自版本:
- 1.3
- 参见:
-
forwardUpdate
protected void forwardUpdate(DocumentEvent.ElementChange ec, DocumentEvent e, Shape a, ViewFactory f) 将给定的DocumentEvent
转发到需要通知模型更改的子视图。如果对该视图负责的元素有更改,则在转发时应考虑这些更改(即新的子视图不应该收到通知)。- 参数:
-
ec
- 对该视图负责的元素的更改(如果没有更改,则可能为null
)。 -
e
- 与关联文档的更改信息 -
a
- 视图的当前分配 -
f
- 如果视图有子视图,则用于重建的工厂 - 自版本:
- 1.3
- 参见:
-
forwardUpdateToView
将DocumentEvent
转发给给定的子视图。这只是通过调用insertUpdate
,removeUpdate
或changedUpdate
来向视图发送消息,具体取决于事件的类型。这由forwardUpdate
调用,以将事件转发给需要的子视图。- 参数:
-
v
- 要转发事件的子视图 -
e
- 与关联文档的更改信息 -
a
- 视图的当前分配 -
f
- 如果视图有子视图,则用于重建的工厂 - 自版本:
- 1.3
- 参见:
-
updateLayout
在接收到来自模型的更改通知时更新布局。这被实现为调用preferenceChanged
以重新安排新的布局,如果ElementChange
记录不为null
。- 参数:
-
ec
- 对该视图负责的元素的更改(如果没有更改,则可能为null
) -
e
- 与关联文档的更改信息 -
a
- 视图的当前分配 - 自版本:
- 1.3
- 参见:
-
modelToView
Deprecated.提供从文档模型坐标空间到其映射视图的坐标空间的映射。这被实现为将偏向默认为Position.Bias.Forward
,这以前是隐含的。- 参数:
-
pos
- 要转换的位置 >= 0 -
a
- 要渲染的分配区域 - 返回值:
- 返回给定位置的边界框
- 抛出:
-
BadLocationException
- 如果给定位置在关联文档中不表示有效位置 - 参见:
-
viewToModel
Deprecated.提供从视图坐标空间到模型的逻辑坐标空间的映射。- 参数:
-
x
- X坐标 >= 0 -
y
- Y坐标 >= 0 -
a
- 要渲染的分配区域 - 返回值:
- 最能代表视图中给定点的模型中的位置 >= 0
- 参见:
-