Module  java.desktop
软件包  javax.swing.text

Class ComponentView

  • All Implemented Interfaces:
    SwingConstants
    已知直接子类:
    FormViewObjectView


    public class ComponentView
    extends View
    实现视图界面的组件装饰器。 整个元素用于表示组件。 这充当从仅显示View实现到交互式轻量级组件(即它允许组件嵌入到View层次结构中)的网关。

    组件根据Component.getAlignmentY返回的值相对于文本基线放置。 对于Swing组件,可以使用方法JComponent.setAlignmentY方便地设置此值。 例如,设置值为0.75将导致75%的组件高于基线,25%的组件将低于基准。

    该类被实现为通过确保在事件线程上完成所有组件访问,在多个线程的存在(即,例如从模型更改的异步通知)中正常工作所需的额外工作。

    所使用的组件由createComponent方法的返回值确定。 此方法的默认实现是返回作为元素属性保存的组件(通过调用StyleConstants.getComponent)。 这种行为的局限性在于组件不能被多个文本组件使用(即使用共享模型)。 子类可以通过实现createComponent来删除此约束,以便根据属性中包含的某种规范实际创建组件。 html包中的ObjectView类是支持共享模型的多个组件视图的ComponentView实现的示例。

    • 构造方法详细信息

      • ComponentView

        public ComponentView​(Element elem)
        创建一个新的ComponentView对象。
        参数
        elem - 要装饰的元素
    • 方法详细信息

      • createComponent

        protected Component createComponent​()
        创建与此视图关联的组件。 当确定需要新的组件时,这将被调用。 这将由调用setParent或由于通知属性已更改而导致。
        结果
        与此视图关联的组件
      • getComponent

        public final Component getComponent​()
        获取与视图关联的组件。
        结果
        与视图关联的组件
      • getPreferredSpan

        public float getPreferredSpan​(int axis)
        确定沿着轴的此视图的首选跨度。 这是为了返回Component.getPreferredSize返回的值沿着感兴趣的轴。
        Specified by:
        getPreferredSpanView
        参数
        axis - 可以是View.X_AXIS或View.Y_AXIS
        结果
        视图想要呈现为> = 0的跨度。 通常,视图被呈现到返回的跨度,尽管不能保证。 父母可以选择调整大小或打破视图。
        异常
        IllegalArgumentException - 无效轴
        另请参见:
        View.getPreferredSpan(int)
      • getMinimumSpan

        public float getMinimumSpan​(int axis)
        确定此视图沿轴的最小跨度。 这是为了返回Component.getMinimumSize返回的值沿着感兴趣的轴。
        重写:
        getMinimumSpanView
        参数
        axis - 可以是View.X_AXIS或View.Y_AXIS
        结果
        视图想要呈现为> = 0的跨度。 通常,视图被呈现到返回的跨度,尽管不能保证。 父母可以选择调整大小或打破视图。
        异常
        IllegalArgumentException - 无效轴
        另请参见:
        View.getPreferredSpan(int)
      • getMaximumSpan

        public float getMaximumSpan​(int axis)
        确定沿着轴的该视图的最大跨度。 这是为了返回Component.getMaximumSize返回的值沿着感兴趣的轴。
        重写:
        getMaximumSpanView
        参数
        axis - 可以是View.X_AXIS或View.Y_AXIS
        结果
        视图想要呈现为> = 0的跨度。 通常,视图被呈现到返回的跨度,尽管不能保证。 父母可以选择调整大小或打破视图。
        异常
        IllegalArgumentException - 对于无效轴
        另请参见:
        View.getPreferredSpan(int)
      • getAlignment

        public float getAlignment​(int axis)
        确定沿着轴的该视图的所需对准。 这被实现以给出嵌入式组件的对齐。
        重写:
        getAlignmentView
        参数
        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层次结构中不安全的一件事情。 因此,如果在事件线程上执行,则会立即执行此功能,或者如果从另一个线程调用(如果从异步更新发生更改的通知),则会在事件队列中排队。

        重写:
        setParentView
        参数
        p - 父母