- java.lang.Object
-
- javax.swing.text.View
-
- javax.swing.text.ComponentView
-
- All Implemented Interfaces:
-
SwingConstants
- 已知直接子类:
-
FormView
,ObjectView
public class ComponentView extends View
实现视图界面的组件装饰器。 整个元素用于表示组件。 这充当从仅显示View实现到交互式轻量级组件(即它允许组件嵌入到View层次结构中)的网关。组件根据
Component.getAlignmentY
返回的值相对于文本基线放置。 对于Swing组件,可以使用方法JComponent.setAlignmentY
方便地设置此值。 例如,设置值为0.75
将导致75%的组件高于基线,25%的组件将低于基准。该类被实现为通过确保在事件线程上完成所有组件访问,在多个线程的存在(即,例如从模型更改的异步通知)中正常工作所需的额外工作。
所使用的组件由createComponent方法的返回值确定。 此方法的默认实现是返回作为元素属性保存的组件(通过调用StyleConstants.getComponent)。 这种行为的局限性在于组件不能被多个文本组件使用(即使用共享模型)。 子类可以通过实现createComponent来删除此约束,以便根据属性中包含的某种规范实际创建组件。 html包中的ObjectView类是支持共享模型的多个组件视图的ComponentView实现的示例。
-
-
Field Summary
-
Fields inherited from 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
-
Fields inherited from class javax.swing.text.View
BadBreakWeight, ExcellentBreakWeight, ForcedBreakWeight, GoodBreakWeight, X_AXIS, Y_AXIS
-
-
构造方法摘要
构造方法 Constructor 描述 ComponentView(Element elem)
创建一个新的ComponentView对象。
-
方法摘要
所有方法 接口方法 具体的方法 Modifier and Type 方法 描述 protected Component
createComponent()
创建与此视图关联的组件。float
getAlignment(int axis)
确定沿着轴的该视图的所需对准。Component
getComponent()
获取与视图关联的组件。float
getMaximumSpan(int axis)
确定沿着轴的该视图的最大跨度。float
getMinimumSpan(int axis)
确定此视图沿轴的最小跨度。float
getPreferredSpan(int axis)
确定沿着轴的此视图的首选跨度。Shape
modelToView(int pos, Shape a, Position.Bias b)
提供从模型的坐标空间到视图的坐标空间的映射。void
paint(Graphics g, Shape a)
真正的绘画行为自然地发生在组件与其父容器(托管此视图的同一容器)的关联中。void
setParent(View p)
设置子视图的父级。int
viewToModel(float x, float y, Shape a, Position.Bias[] bias)
提供从视图坐标空间到模型的逻辑坐标空间的映射。-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from class javax.swing.text.View
append, breakView, changedUpdate, createFragment, forwardUpdate, forwardUpdateToView, getAttributes, getBreakWeight, getChildAllocation, getContainer, getDocument, getElement, getEndOffset, getGraphics, getNextVisualPositionFrom, getParent, getResizeWeight, getStartOffset, getToolTipText, getView, getViewCount, getViewFactory, getViewIndex, getViewIndex, insert, insertUpdate, isVisible, modelToView, modelToView, preferenceChanged, remove, removeAll, removeUpdate, replace, setSize, updateChildren, updateLayout, viewToModel
-
-
-
-
构造方法详细信息
-
ComponentView
public ComponentView(Element elem)
创建一个新的ComponentView对象。- 参数
-
elem
- 要装饰的元素
-
-
方法详细信息
-
createComponent
protected Component createComponent()
创建与此视图关联的组件。 当确定需要新的组件时,这将被调用。 这将由调用setParent或由于通知属性已更改而导致。- 结果
- 与此视图关联的组件
-
getComponent
public final Component getComponent()
获取与视图关联的组件。- 结果
- 与视图关联的组件
-
paint
public void paint(Graphics g, Shape a)
真正的绘画行为自然地发生在组件与其父容器(托管此视图的同一容器)的关联中。 这是执行什么都不做的。- Specified by:
-
paint
在View
- 参数
-
g
- 图形上下文 -
a
- 形状 - 另请参见:
-
View.paint(java.awt.Graphics, java.awt.Shape)
-
getPreferredSpan
public float getPreferredSpan(int axis)
确定沿着轴的此视图的首选跨度。 这是为了返回Component.getPreferredSize返回的值沿着感兴趣的轴。- Specified by:
-
getPreferredSpan
在View
- 参数
-
axis
- 可以是View.X_AXIS或View.Y_AXIS - 结果
- 视图想要呈现为> = 0的跨度。 通常,视图被呈现到返回的跨度,尽管不能保证。 父母可以选择调整大小或打破视图。
- 异常
-
IllegalArgumentException
- 无效轴 - 另请参见:
-
View.getPreferredSpan(int)
-
getMinimumSpan
public float getMinimumSpan(int axis)
确定此视图沿轴的最小跨度。 这是为了返回Component.getMinimumSize返回的值沿着感兴趣的轴。- 重写:
-
getMinimumSpan
在View
- 参数
-
axis
- 可以是View.X_AXIS或View.Y_AXIS - 结果
- 视图想要呈现为> = 0的跨度。 通常,视图被呈现到返回的跨度,尽管不能保证。 父母可以选择调整大小或打破视图。
- 异常
-
IllegalArgumentException
- 无效轴 - 另请参见:
-
View.getPreferredSpan(int)
-
getMaximumSpan
public float getMaximumSpan(int axis)
确定沿着轴的该视图的最大跨度。 这是为了返回Component.getMaximumSize返回的值沿着感兴趣的轴。- 重写:
-
getMaximumSpan
在View
- 参数
-
axis
- 可以是View.X_AXIS或View.Y_AXIS - 结果
- 视图想要呈现为> = 0的跨度。 通常,视图被呈现到返回的跨度,尽管不能保证。 父母可以选择调整大小或打破视图。
- 异常
-
IllegalArgumentException
- 对于无效轴 - 另请参见:
-
View.getPreferredSpan(int)
-
getAlignment
public float getAlignment(int axis)
确定沿着轴的该视图的所需对准。 这被实现以给出嵌入式组件的对齐。- 重写:
-
getAlignment
在View
- 参数
-
axis
- 可以是View.X_AXIS或View.Y_AXIS - 结果
- 所需的对齐。 这应该是0.0到1.0之间的值,其中0表示原点对齐,1.0表示与原点的全跨距对齐。 0.5的对齐将是视图的中心。
-
setParent
public void setParent(View p)
设置子视图的父级。 父母把这个告诉孩子,告诉它父母是谁,让视图访问主机容器。 执行超类行为,接着如果父视图参数为非空,并且尚未创建组件,则调用createComponent。 然后将嵌入组件父项设置为由getContainer
返回的值。 如果父视图参数为null,则此视图正在清除,因此该组件将从其父项中删除。组件层次结构的更改将触及组件锁定,这是View层次结构中不安全的一件事情。 因此,如果在事件线程上执行,则会立即执行此功能,或者如果从另一个线程调用(如果从异步更新发生更改的通知),则会在事件队列中排队。
-
modelToView
public Shape modelToView(int pos, Shape a, Position.Bias b) throws BadLocationException
提供从模型的坐标空间到视图的坐标空间的映射。- Specified by:
-
modelToView
在View
- 参数
-
pos
- 转换> = 0的位置 -
a
- 要分配的区域 -
b
- 在位置是两个视图的边界的情况下,偏移到由偏移表示的前一个字符或下一个字符;b
将具有以下值之一:-
Position.Bias.Forward
-
Position.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)
提供从视图坐标空间到模型的逻辑坐标空间的映射。- Specified by:
-
viewToModel
在View
- 参数
-
x
- X坐标> = 0 -
y
- Y坐标> = 0 -
a
- 要分配的区域 -
bias
- 返回的偏差 - 结果
- 模型中最能代表视图中给定点的位置
- 另请参见:
-
View.viewToModel(float, float, java.awt.Shape, javax.swing.text.Position.Bias[])
-
-