Module java.desktop
Package javax.swing.plaf

Class ComponentUI

java.lang.Object
javax.swing.plaf.ComponentUI
直接已知的子类:
ButtonUI, ColorChooserUI, ComboBoxUI, DesktopIconUI, DesktopPaneUI, FileChooserUI, InternalFrameUI, LabelUI, LayerUI, ListUI, MenuBarUI, OptionPaneUI, PanelUI, PopupMenuUI, ProgressBarUI, RootPaneUI, ScrollBarUI, ScrollPaneUI, SeparatorUI, SliderUI, SpinnerUI, SplitPaneUI, TabbedPaneUI, TableHeaderUI, TableUI, TextUI, ToolBarUI, ToolTipUI, TreeUI, ViewportUI

public abstract class ComponentUI extends Object
Swing可插拔外观架构中所有UI委托对象的基类。Swing组件的UI委托对象负责实现依赖外观的组件方面。JComponent类调用此类中的方法以委托可能因安装的外观而异的操作(绘制、布局计算等)。客户端程序不应直接调用此类上的方法。
参见:
  • Constructor Details

    • ComponentUI

      public ComponentUI()
      唯一构造函数。(通常由子类构造函数隐式调用。)
  • Method Details

    • installUI

      public void installUI(JComponent c)
      为外观适当配置指定的组件。当将ComponentUI实例安装为指定组件的UI委托时,将调用此方法。此方法应完全为外观配置组件,包括以下内容:
      1. 在组件上安装默认属性值,如颜色、字体、边框、图标、不透明度等。尽可能地,客户端程序初始化的属性值不应被覆盖。
      2. 如有必要,在组件上安装LayoutManager
      3. 为组件创建/添加任何必需的子组件。
      4. 在组件上创建/安装事件监听器。
      5. 在组件上创建/安装PropertyChangeListener,以便适当地检测和响应组件属性更改。
      6. 在组件上安装键盘UI(助记键、遍历等)。
      7. 初始化任何适当的实例数据。
      参数:
      c - 正在安装此UI委托的组件
      参见:
    • uninstallUI

      public void uninstallUI(JComponent c)
      反转在installUI期间对指定组件执行的配置。当将此UIComponent实例作为指定组件的UI委托移除时,将调用此方法。此方法应撤消在installUI中执行的配置,务必使JComponent实例保持干净状态(没有多余的监听器、特定于外观的属性对象等)。这应包括以下内容:
      1. 从组件中移除任何UI设置的边框。
      2. 从组件中移除任何UI设置的布局管理器。
      3. 从组件中移除任何UI添加的子组件。
      4. 从组件中移除任何UI添加的事件/属性监听器。
      5. 从组件中移除任何UI安装的键盘UI。
      6. 将分配的任何实例数据对象置为null,以便进行垃圾回收。
      参数:
      c - 正在移除此UI委托的组件;通常忽略此参数,但如果UI对象是无状态的并由多个组件共享,则可能会使用该参数
      参见:
    • paint

      public void paint(Graphics g, JComponent c)
      为外观适当绘制指定的组件。当正在绘制指定组件时,此方法将从ComponentUI.update方法中调用。子类应重写此方法,并使用指定的Graphics对象来呈现组件的内容。
      参数:
      g - 用于绘制的Graphics上下文
      c - 正在绘制的组件;通常忽略此参数,但如果UI对象是无状态的并由多个组件共享,则可能会使用该参数
      参见:
    • update

      public void update(Graphics g, JComponent c)
      通知此UI委托,现在是时候绘制指定的组件了。当正在绘制指定组件时,JComponent将调用此方法。

      默认情况下,如果其opaque属性为true,此方法将使用其背景颜色填充指定组件,然后立即调用paint。一般情况下,子类无需重写此方法;所有外观渲染代码应位于paint方法中。

      参数:
      g - 用于绘制的Graphics上下文
      c - 正在绘制的组件;通常忽略此参数,但如果UI对象是无状态的并由多个组件共享,则可能会使用该参数
      参见:
    • getPreferredSize

      public Dimension getPreferredSize(JComponent c)
      返回适合外观的指定组件的首选大小。如果返回null,则首选大小将由组件的布局管理器计算(对于安装了特定布局管理器的任何组件,这是首选方法)。此方法的默认实现返回null
      参数:
      c - 正在查询其首选大小的组件;通常忽略此参数,但如果UI对象是无状态的并由多个组件共享,则可能会使用该参数
      返回:
      包含给定组件的首选大小适合外观的Dimension对象
      参见:
    • getMinimumSize

      public Dimension getMinimumSize(JComponent c)
      返回适合外观的指定组件的最小大小。如果返回null,则最小大小将由组件的布局管理器计算(对于安装了特定布局管理器的任何组件,这是首选方法)。此方法的默认实现调用getPreferredSize并返回该值。
      参数:
      c - 被查询最小尺寸的组件;通常会忽略此参数,但如果UI对象是无状态的并且被多个组件共享,则可能会被使用
      返回:
      一个Dimension对象或null
      参见:
    • getMaximumSize

      public Dimension getMaximumSize(JComponent c)
      返回指定组件适合外观和感觉的最大尺寸。如果返回null,则最大尺寸将由组件的布局管理器计算(这是任何具有特定布局管理器安装的组件的首选方法)。此方法的默认实现调用getPreferredSize并返回该值。
      参数:
      c - 被查询最大尺寸的组件;通常会忽略此参数,但如果UI对象是无状态的并且被多个组件共享,则可能会被使用
      返回:
      一个Dimension对象或null
      参见:
    • contains

      public boolean contains(JComponent c, int x, int y)
      如果指定的x,y位置包含在指定组件的外观和感觉定义的形状内,则返回truexy被定义为相对于指定组件的坐标系。尽管组件的bounds被限制为矩形,但此方法提供了在这些边界内定义非矩形形状以进行点击检测的方法。
      参数:
      c - 正在查询x,y位置的组件;通常会忽略此参数,但如果UI对象是无状态的并且被多个组件共享,则可能会被使用
      x - 点的x坐标
      y - 点的y坐标
      返回:
      如果指定的x,y位置包含在给定组件的外观和感觉定义的形状内,则返回true
      参见:
    • createUI

      public static ComponentUI createUI(JComponent c)
      返回指定组件的UI代理实例。每个子类必须提供自己的静态createUI方法,返回该UI代理子类的实例。如果UI代理子类是无状态的,则可以返回一个被多个组件共享的实例。如果UI代理是有状态的,则应为每个组件返回一个新实例。此方法的默认实现会抛出错误,因为不应该调用它。
      参数:
      c - 要为其创建UI代理的JComponent
      返回:
      用于cComponentUI对象
    • getBaseline

      public int getBaseline(JComponent c, int width, int height)
      返回基线。基线从组件的顶部开始测量。此方法主要用于LayoutManager来沿着它们的基线对齐组件。返回值小于0表示此组件没有合理的基线,LayoutManager不应该将此组件与其基线对齐。

      此方法返回-1。具有有意义基线的子类应适当重写。

      参数:
      c - 请求基线的JComponent
      width - 获取基线的宽度
      height - 获取基线的高度
      返回:
      基线或值< 0表示没有合理的基线
      抛出:
      NullPointerException - 如果cnull
      IllegalArgumentException - 如果宽度或高度< 0
      自:
      1.6
      参见:
    • getBaselineResizeBehavior

      public Component.BaselineResizeBehavior getBaselineResizeBehavior(JComponent c)
      返回一个枚举,指示组件的基线随尺寸变化而变化的方式。此方法主要用于布局管理器和GUI构建器。

      此方法返回BaselineResizeBehavior.OTHER。支持基线的子类应适当重写。

      参数:
      c - 要返回基线调整行为的JComponent
      返回:
      一个枚举,指示组件尺寸变化时基线的变化方式
      抛出:
      NullPointerException - 如果cnull
      自:
      1.6
      参见:
    • getAccessibleChildrenCount

      public int getAccessibleChildrenCount(JComponent c)
      返回对象中可访问的子对象数量。如果此对象的所有子对象都实现了Accessible,则此方法应返回此对象的子对象数量。如果UI呈现屏幕上可以视为组件的区域,但实际上未使用实际组件来呈现这些区域,则UI可能希望覆盖此方法。注意:从v1.3开始,建议开发人员调用Component.AccessibleAWTComponent.getAccessibleChildrenCount()而不是调用此方法。
      参数:
      c - 要获取可访问子对象计数的JComponent
      返回:
      对象中可访问的子对象数量
      参见:
    • getAccessibleChild

      public Accessible getAccessibleChild(JComponent c, int i)
      返回对象的第iAccessible子对象。如果UI呈现屏幕上可以视为组件的区域,但实际上未使用实际组件来呈现这些区域,则UI可能需要覆盖此方法。

      注意:从v1.3开始,建议开发人员调用Component.AccessibleAWTComponent.getAccessibleChild()而不是调用此方法。

      参数:
      c - 要获取子对象的JComponent
      i - 子对象的从零开始的索引
      返回:
      对象的第iAccessible子对象
      参见: