java.lang.Object javax.swing.text.View javax.swing.text.ComponentView
public class ComponentView
实现视图接口的组件装饰器。整个元素用于代表该组件。它充当了只供显示的 View 实现和交互式轻量级组件之间的网关(即允许组件嵌入 View 层次结构中)。
组件根据 Component.getAlignmentY
返回的值相对于文本基线放置。对于 Swing 组件,使用 JComponent.setAlignmentY
方法可以很便捷地设置此值。例如,值设置为 0.75
将使组件的 75% 位于基线的上面,25% 位于基线的下面。
通过确保在事件线程中完成对所有的组件访问,实现此类可完成在多线程情况下(例如,来自模型更改的同步通知)进行正常工作所需的工作。
所使用的组件由 createComponent 方法的返回值确定。此方法的默认实现为将存储的组件作为元素的一个属性返回(通过调用 StyleConstants.getComponent)。此行为有一个限制,组件不能由多于一个文本组件(即可共享的模型)使用。通过实现 createComponent 从而实际上基于属性中包含的某种规范创建一个组件,子类可消除此约束。html 包中的 ObjectView 类为 ComponentView 实现的一个示例,它支持一个共享模型的多组件视图。
字段摘要 |
---|
从类 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 |
构造方法摘要 | |
---|---|
ComponentView(Element elem) 创建新的 ComponentView 对象。 |
方法摘要 | |
---|---|
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) 提供从视图坐标空间到模型逻辑坐标空间的映射。 |
从类 java.lang.Object 继承的方法 |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
构造方法详细信息 |
---|
public ComponentView(Element elem)
elem
- 要装饰的元素
方法详细信息 |
---|
protected Component createComponent()
public final Component getComponent()
public void paint(Graphics g, Shape a)
g
- 图形上下文
a
- 形状
View.paint(java.awt.Graphics, java.awt.Shape)
public float getPreferredSpan(int axis)
View
中的
getPreferredSpan
axis
- 可以是 View.X_AXIS 或 View.Y_AXIS
IllegalArgumentException
- 如果轴无效
View.getPreferredSpan(int)
public float getMinimumSpan(int axis)
View
中的
getMinimumSpan
axis
- 可以是 View.X_AXIS 或 View.Y_AXIS
IllegalArgumentException
- 如果轴无效
View.getPreferredSpan(int)
public float getMaximumSpan(int axis)
View
中的
getMaximumSpan
axis
- 可以是 View.X_AXIS 或 View.Y_AXIS
IllegalArgumentException
- 如果轴无效
View.getPreferredSpan(int)
public float getAlignment(int axis)
View
中的
getAlignment
axis
- 可以是 View.X_AXIS 或 View.Y_AXIS
public void setParent(View p)
getContainer
返回的值。如果父视图参数为 null,此视图将被清空,这样组件将从其父中移除。
更改组件所在的层次结构将会触动组件锁,这是 View 层次结构的一个不安全之处。因此,如果在事件线程中,则会立即执行此功能;如果是从另一个线程(来自异步更新的更改通知)调用,则此功能将在事件队列排队。
p
- 父级
public Shape modelToView(int pos, Shape a, Position.Bias b) throws BadLocationException
View
中的
modelToView
pos
- 要转换的位置,该值 >= 0
a
- 分配的要在其中呈现的区域
b
- 当位置是两个视图的边界时,该参数是离由偏移量表示的前一个字符或者下一个字符的偏差;
b
将是这些值之一:
Position.Bias.Forward
Position.Bias.Backward
BadLocationException
- 如果给定位置在所关联的文档中不是一个有效位置
View.modelToView(int, 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
- 分配的要在其中呈现的区域
View.viewToModel(float, float, java.awt.Shape, javax.swing.text.Position.Bias[])