javax.swing.text

接口
异常
java.lang.Object
  继承者 javax.swing.text.View
      继承者 javax.swing.text.ComponentView
所有已实现的接口:
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 实现的一个示例,它支持一个共享模型的多组件视图。


字段摘要
 
从类 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)
          提供从视图坐标空间到模型逻辑坐标空间的映射。
 
从类 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
 
从类 java.lang.Object 继承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

构造方法详细信息

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)
真正的绘制行为自然来源于组件与其父容器(容纳此视图的同一容器)之间的关联。实现它不进行任何操作。

指定者:
View 中的 paint
参数:
g - 图形上下文
a - 形状
另请参见:
View.paint(java.awt.Graphics, java.awt.Shape)

getPreferredSpan

public float getPreferredSpan(int axis)
确定此视图沿某轴的首选区域。实现它可返回由 Component.getPreferredSize 返回的沿所需轴的值。

指定者:
View 中的 getPreferredSpan
参数:
axis - 可以是 View.X_AXIS 或 View.Y_AXIS
返回:
视图可能要在其中呈现的区域,该区域 >= 0。通常会告知该视图要在返回的区域中呈现,但不能保证一定如此。父级可选择重新调整视图大小或拆分视图。
抛出:
IllegalArgumentException - 如果轴无效
另请参见:
View.getPreferredSpan(int)

getMinimumSpan

public float getMinimumSpan(int axis)
确定此视图沿某轴的最小区域。实现它可返回由 Component.getMinimumSize 返回的沿所需轴的值。

覆盖:
View 中的 getMinimumSpan
参数:
axis - 可以是 View.X_AXIS 或 View.Y_AXIS
返回:
视图可能要在其中呈现的区域,该区域 >= 0。通常会告知该视图在返回的区域中呈现,但不能保证一定如此。父级可选择重新调整视图大小或拆分视图。
抛出:
IllegalArgumentException - 如果轴无效
另请参见:
View.getPreferredSpan(int)

getMaximumSpan

public float getMaximumSpan(int axis)
确定此视图沿某轴的最大区域。实现它可返回由 Component.getMaximumSize 返回的沿所需轴的值。

覆盖:
View 中的 getMaximumSpan
参数:
axis - 可以是 View.X_AXIS 或 View.Y_AXIS
返回:
视图可能要在其中呈现的区域,该区域 >= 0。通常会告知该视图在返回的区域中呈现,但不能保证一定如此。父级可选择重新调整视图大小或拆分视图。
抛出:
IllegalArgumentException - 如果轴无效
另请参见:
View.getPreferredSpan(int)

getAlignment

public float getAlignment(int axis)
确定此视图沿某轴所需的对齐方式。实现它来为嵌入组件提供对齐方式。

覆盖:
View 中的 getAlignment
参数:
axis - 可以是 View.X_AXIS 或 View.Y_AXIS
返回:
需要的对齐方式。这应该是介于 0.0 和 1.0 之间的一个值,0 指示在起始位置对齐,1.0 指示在离开起始位置的整个跨距处对齐。为 0.5 表示在视图的中心对齐。

setParent

public void setParent(View p)
为子视图设置父级。父级在子级上调用此方法以告知子级谁为其父,同时为类似宿主 Container 的组件提供视图访问。如果父视图参数为非空且尚未创建组件,将执行超类行为,然后调用 createComponent。嵌入组件的父被设置为由 getContainer 返回的值。如果父视图参数为 null,此视图将被清空,这样组件将从其父中移除。

更改组件所在的层次结构将会触动组件锁,这是 View 层次结构的一个不安全之处。因此,如果在事件线程中,则会立即执行此功能;如果是从另一个线程(来自异步更新的更改通知)调用,则此功能将在事件队列排队。

覆盖:
View 中的 setParent
参数:
p - 父级

modelToView

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)

viewToModel

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[])