模块 java.desktop

类 UIManager

java.lang.Object
javax.swing.UIManager
所有已实现的接口:
Serializable

public class UIManager extends Object implements Serializable
UIManager 管理当前外观、可用外观集、外观更改时通知的 PropertyChangeListeners、外观默认值以及获取各种默认值的便捷方法。

指定外观

外观可以通过两种不同的方式指定:通过为外观指定类的完全限定名称,或者通过创建 LookAndFeel 的实例并将其传递给 setLookAndFeel 。以下示例说明了将外观设置为系统外观:
  UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
 
以下示例说明了根据类名设置外观:
  UIManager.setLookAndFeel("javax.swing.plaf.metal.MetalLookAndFeel");
 
一旦更改了外观,就必须在所有 JComponents 上调用 updateUISwingUtilities.updateComponentTreeUI(java.awt.Component) 方法可以轻松地将 updateUI 应用于包含层次结构。详情请参阅。未指定更改外观后不调用 updateUI 的确切行为。很可能会收到意想不到的异常、绘画问题或更糟的情况。

默认外观

用于默认外观的类按以下方式选择:
  1. 如果系统属性 swing.defaultlafnon-null ,使用它的值作为默认的外观类名。
  2. 如果 Properties 文件 swing.properties 存在并包含键 swing.defaultlaf ,则使用它的值作为默认外观类名。检查 swing.properties 的位置可能因 Java 平台的实现而异。通常,swing.properties 文件位于 Java 安装目录的 conf 子目录中。有关更多详细信息,请参阅所用实现的发行说明。
  3. 否则使用跨平台外观。

默认值

UIManager 管理三套 UIDefaults 。按顺序,它们是:
  1. 开发者默认。除了少数异常,Swing 不会改变开发人员的默认设置;这些旨在供开发人员修改和使用。
  2. 外观默认。外观默认值由安装时的外观提供为当前外观(setLookAndFeel() 被调用)。可以使用 getLookAndFeelDefaults() 方法获取外观默认值。
  3. 系统默认值。系统默认值由 Swing 提供。
调用各种 get 方法中的任何一种都会导致检查每个默认值,按顺序返回第一个 non-null 值。例如,调用 UIManager.getString("Table.foreground") 会导致首先检查开发人员默认值。如果开发人员默认值包含 "Table.foreground" 的值,则返回该值,否则将检查外观默认值,然后检查系统默认值。

请务必注意,getDefaults 返回一个自定义实例 UIDefaults,其中内置了此解析逻辑。例如,UIManager.getDefaults().getString("Table.foreground") 等同于 UIManager.getString("Table.foreground")。两者都使用刚刚描述的算法解决。在许多地方,文档使用 defaults 一词来指代 UIDefaults 的自定义实例,其解析逻辑如前所述。

更改外观时,UIManager 仅更改外观默认值; UIManager 不会以任何方式更改开发人员和系统默认设置。

特定外观支持的一组默认值由该外观定义和记录。此外,每个外观,或外观提供的ComponentUI,都可以在其生命周期的不同时间访问默认值。某些外观可能会主动查找默认值,因此在安装外观后更改默认值可能不会产生任何影响。其他外观可能会懒惰地访问默认值,因此对默认值的更改可能会影响现有的外观。最后,其他外观可能不会以任何方式从默认表中自行配置。尽管如此,外观通常需要某些默认值,因此一般情况下,一种外观提供的ComponentUI 不能用于另一种外观。

Warning: 此类的序列化对象将与未来的 Swing 版本不兼容。当前的序列化支持适用于运行相同版本 Swing 的应用程序之间的短期存储或 RMI。从 1.4 开始,对所有 JavaBeans 的长期存储的支持已添加到 java.beans 包中。请参阅 XMLEncoder

自从:
1.2
  • 构造方法详细信息

    • UIManager

      public UIManager()
      构造一个 UIManager
  • 方法详情

    • getInstalledLookAndFeels

      public static UIManager.LookAndFeelInfo [] getInstalledLookAndFeels()
      返回代表当前可用的 LookAndFeel 实现的 LookAndFeelInfo 数组。应用程序可以使用 LookAndFeelInfo 对象为用户构建外观选项菜单,或确定在启动时设置哪种外观。为了避免创建大量 LookAndFeel 对象的惩罚,LookAndFeelInfo 维护 LookAndFeel 类的类名,而不是实际的 LookAndFeel 实例。

      以下示例说明了从 LookAndFeelInfo 实例设置当前外观:

        UIManager.setLookAndFeel(info.getClassName());
       
      返回:
      LookAndFeelInfo 对象数组
      参见:
    • setInstalledLookAndFeels

      public static void setInstalledLookAndFeels(UIManager.LookAndFeelInfo [] infos) throws SecurityException
      设置一组可用的外观。虽然此方法不会检查以确保所有 LookAndFeelInfos 都是 non-null,但强烈建议在 infos 数组中仅提供 non-null 值。
      参数:
      infos - 一组 LookAndFeelInfo 对象,指定可用的外观
      抛出:
      NullPointerException - 如果 infosnull
      SecurityException
      参见:
    • installLookAndFeel

      public static void installLookAndFeel(UIManager.LookAndFeelInfo  info)
      将指定的外观添加到可用外观的集合中。虽然此方法允许使用 null info,但强烈建议使用 non-null 值。
      参数:
      info - 命名外观并标识实现它的类的 LookAndFeelInfo 对象
      参见:
    • installLookAndFeel

      public static void installLookAndFeel(String  name, String  className)
      将指定的外观添加到可用外观的集合中。虽然此方法不会以任何方式检查参数,但强烈建议提供 non-null 值。
      参数:
      name - 外观的描述性名称
      className - 实现外观的类的名称
      参见:
    • getLookAndFeel

      public static LookAndFeel  getLookAndFeel()
      返回当前外观或 null
      返回:
      当前的外观,或 null
      参见:
    • createLookAndFeel

      public static LookAndFeel  createLookAndFeel(String  name) throws UnsupportedLookAndFeelException
      创建由给定的 L&F name 名称指定的受支持的内置 Java LookAndFeel
      参数:
      name - 一个 String 指定内置外观的名称
      返回:
      内置的 LookAndFeel 对象
      抛出:
      NullPointerException - 如果 namenull
      UnsupportedLookAndFeelException - 如果找不到给定名称的内置 Java L&F 或者底层平台不支持它
      自从:
      9
      参见:
    • setLookAndFeel

      public static void setLookAndFeel(LookAndFeel  newLookAndFeel) throws UnsupportedLookAndFeelException
      将当前外观设置为 newLookAndFeel。如果当前外观是 non-null uninitialize 就调用它。如果 newLookAndFeelnon-null,则在其上调用 initialize,然后调用 getDefaults。从 newLookAndFeel.getDefaults() 返回的默认值替换了以前外观的默认值。如果 newLookAndFeelnull,则外观默认设置为 null

      null 可用于将外观设置为 null 。由于大多数 Swing 功能都需要 LookAndFeel,因此强烈建议不要将 LookAndFeel 设置为 null

      这是一个 JavaBeans 绑定属性。

      参数:
      newLookAndFeel - LookAndFeel 安装
      抛出:
      UnsupportedLookAndFeelException - 如果 newLookAndFeelnon-null 并且 newLookAndFeel.isSupportedLookAndFeel() 返回 false
      参见:
    • setLookAndFeel

      使用当前线程的上下文类加载器加载给定类名指定的 LookAndFeel,并将其传递给 setLookAndFeel(LookAndFeel)
      参数:
      className - 一个字符串,指定实现外观的类的名称
      抛出:
      ClassNotFoundException - 如果找不到 LookAndFeel
      InstantiationException - 如果无法创建该类的新实例
      IllegalAccessException - 如果类或初始化程序不可访问
      UnsupportedLookAndFeelException - 如果 lnf.isSupportedLookAndFeel() 为假
      ClassCastException - 如果 className 没有识别扩展 LookAndFeel 的类
      NullPointerException - 如果 classNamenull
    • getSystemLookAndFeelClassName

      public static String  getSystemLookAndFeelClassName()
      如果存在,则返回实现本机系统外观的 LookAndFeel 类的名称,否则返回默认跨平台 LookAndFeel 类的名称。可以通过设置 swing.systemlaf 系统属性来覆盖此值。
      返回:
      LookAndFeel 类的 String
      参见:
    • getCrossPlatformLookAndFeelClassName

      public static String  getCrossPlatformLookAndFeelClassName()
      返回实现默认跨平台观感的 LookAndFeel 类的名称——Java 观感 (JLF)。可以通过设置 swing.crossplatformlaf 系统属性来覆盖此值。
      返回:
      带有 JLF 实现类的字符串
      参见:
    • getDefaults

      public static UIDefaults  getDefaults()
      返回默认值。返回的默认值使用类文档中指定的逻辑解析。
      返回:
      包含默认值的 UIDefaults 对象
    • getFont

      public static Font  getFont(Object  key)
      从默认值返回字体。如果 key 的值不是 Font ,则返回 null
      参数:
      key - 一个 Object 指定字体
      返回:
      Font 对象
      抛出:
      NullPointerException - 如果 keynull
    • getFont

      public static Font  getFont(Object  key, Locale  l)
      从适合给定locale的默认值返回字体。如果 key 的值不是 Font ,则返回 null
      参数:
      key - 一个 Object 指定字体
      l - 需要字体的 Locale;有关如何处理 null Locale 的详细信息,请参阅 UIDefaults
      返回:
      Font 对象
      抛出:
      NullPointerException - 如果 keynull
      自从:
      1.4
    • getColor

      public static Color  getColor(Object  key)
      从默认值返回颜色。如果 key 的值不是 Color ,则返回 null
      参数:
      key - 一个 Object 指定颜色
      返回:
      Color 对象
      抛出:
      NullPointerException - 如果 keynull
    • getColor

      public static Color  getColor(Object  key, Locale  l)
      从适合给定locale的默认值返回颜色。如果 key 的值不是 Color ,则返回 null
      参数:
      key - 一个 Object 指定颜色
      l - 需要颜色的 Locale;有关如何处理 null Locale 的详细信息,请参阅 UIDefaults
      返回:
      Color 对象
      抛出:
      NullPointerException - 如果 keynull
      自从:
      1.4
    • getIcon

      public static Icon  getIcon(Object  key)
      从默认值返回一个 Icon。如果 key 的值不是 Icon ,则返回 null
      参数:
      key - 一个 Object 指定图标
      返回:
      Icon 对象
      抛出:
      NullPointerException - 如果 keynull
    • getIcon

      public static Icon  getIcon(Object  key, Locale  l)
      从适合给定locale的默认值返回一个 Icon。如果 key 的值不是 Icon ,则返回 null
      参数:
      key - 一个 Object 指定图标
      l - 需要图标的 Locale;有关如何处理 null Locale 的详细信息,请参阅 UIDefaults
      返回:
      Icon 对象
      抛出:
      NullPointerException - 如果 keynull
      自从:
      1.4
    • getBorder

      public static Border  getBorder(Object  key)
      从默认值返回边框。如果 key 的值不是 Border ,则返回 null
      参数:
      key - 一个 Object 指定边框
      返回:
      Border 对象
      抛出:
      NullPointerException - 如果 keynull
    • getBorder

      public static Border  getBorder(Object  key, Locale  l)
      从适合给定locale的默认值返回边框。如果 key 的值不是 Border ,则返回 null
      参数:
      key - 一个 Object 指定边框
      l - 需要边框的 Locale;有关如何处理 null Locale 的详细信息,请参阅 UIDefaults
      返回:
      Border 对象
      抛出:
      NullPointerException - 如果 keynull
      自从:
      1.4
    • getString

      public static String  getString(Object  key)
      从默认值返回一个字符串。如果 key 的值不是 String ,则返回 null
      参数:
      key - 一个 Object 指定字符串
      返回:
      String
      抛出:
      NullPointerException - 如果 keynull
    • getString

      public static String  getString(Object  key, Locale  l)
      从适合给定locale的默认值中返回一个字符串。如果 key 的值不是 String ,则返回 null
      参数:
      key - 一个 Object 指定字符串
      l - 需要字符串的 Locale;有关如何处理 null Locale 的详细信息,请参阅 UIDefaults
      返回:
      String
      抛出:
      NullPointerException - 如果 keynull
      自从:
      1.4
    • getInt

      public static int getInt(Object  key)
      从默认值返回一个整数。如果 key 的值不是 Integer 或不存在,则返回 0
      参数:
      key - 一个 Object 指定 int
      返回:
      整数
      抛出:
      NullPointerException - 如果 keynull
    • getInt

      public static int getInt(Object  key, Locale  l)
      从适合给定locale的默认值中返回一个整数。如果 key 的值不是 Integer 或不存在,则返回 0
      参数:
      key - 一个 Object 指定 int
      l - 需要 int 的 Locale;有关如何处理 null Locale 的详细信息,请参阅 UIDefaults
      返回:
      整数
      抛出:
      NullPointerException - 如果 keynull
      自从:
      1.4
    • getBoolean

      public static boolean getBoolean(Object  key)
      从与键值关联的默认值返回一个boolean。如果未找到密钥或密钥不代表boolean,则返回 false
      参数:
      key - 一个 Object 为所需的boolean指定键
      返回:
      键对应的boolean
      抛出:
      NullPointerException - 如果 keynull
      自从:
      1.4
    • getBoolean

      public static boolean getBoolean(Object  key, Locale  l)
      从与键值和给定 Locale 关联的默认值返回一个boolean。如果未找到密钥或密钥不代表boolean,则将返回 false
      参数:
      key - 一个 Object 为所需的boolean指定键
      l - 需要boolean的 Locale;有关如何处理 null Locale 的详细信息,请参阅 UIDefaults
      返回:
      键对应的boolean
      抛出:
      NullPointerException - 如果 keynull
      自从:
      1.4
    • getInsets

      public static Insets  getInsets(Object  key)
      从默认值返回一个 Insets 对象。如果 key 的值不是 Insets ,则返回 null
      参数:
      key - 一个 Object 指定 Insets 对象
      返回:
      Insets 对象
      抛出:
      NullPointerException - 如果 keynull
    • getInsets

      public static Insets  getInsets(Object  key, Locale  l)
      从适合给定locale的默认值返回一个 Insets 对象。如果 key 的值不是 Insets ,则返回 null
      参数:
      key - 一个 Object 指定 Insets 对象
      l - 需要对象的 Locale;有关如何处理 null Locale 的详细信息,请参阅 UIDefaults
      返回:
      Insets 对象
      抛出:
      NullPointerException - 如果 keynull
      自从:
      1.4
    • getDimension

      public static Dimension  getDimension(Object  key)
      从默认值返回一个维度。如果 key 的值不是 Dimension ,则返回 null
      参数:
      key - 一个 Object 指定维度对象
      返回:
      Dimension 对象
      抛出:
      NullPointerException - 如果 keynull
    • getDimension

      public static Dimension  getDimension(Object  key, Locale  l)
      从适合给定locale的默认值中返回一个维度。如果 key 的值不是 Dimension ,则返回 null
      参数:
      key - 一个 Object 指定维度对象
      l - 需要对象的 Locale;有关如何处理 null Locale 的详细信息,请参阅 UIDefaults
      返回:
      Dimension 对象
      抛出:
      NullPointerException - 如果 keynull
      自从:
      1.4
    • get

      public static Object  get(Object  key)
      从默认值返回一个对象。
      参数:
      key - 一个 Object 指定所需的对象
      返回:
      Object
      抛出:
      NullPointerException - 如果 keynull
    • get

      public static Object  get(Object  key, Locale  l)
      从适合给定locale的默认值中返回一个对象。
      参数:
      key - 一个 Object 指定所需的对象
      l - 需要对象的 Locale;有关如何处理 null Locale 的详细信息,请参阅 UIDefaults
      返回:
      Object
      抛出:
      NullPointerException - 如果 keynull
      自从:
      1.4
    • put

      public static Object  put(Object  key, Object  value)
      将对象存储在开发人员默认值中。这是 getDefaults().put(key, value) 的覆盖方法。这只会影响开发人员的默认设置,不会影响系统或外观默认设置。
      参数:
      key - 一个 Object 指定检索键
      value - 要存储的 Object;有关如何处理 null 的详细信息,请参阅 UIDefaults
      返回:
      UIDefaults.put(java.lang.Object, java.lang.Object) 返回的 Object
      抛出:
      NullPointerException - 如果 keynull
      参见:
    • getUI

      public static ComponentUI  getUI(JComponent  target)
      返回 target 的适当 ComponentUI 实现。通常,这是 getDefaults().getUI(target) 的封面。但是,如果已安装辅助外观,这首先会在多路复用外观的默认值上调用 getUI(target),如果它是 non-null,则返回该值。
      参数:
      target - 返回 ComponentUIJComponent
      返回:
      targetComponentUI 对象
      抛出:
      NullPointerException - 如果 targetnull
      参见:
    • getLookAndFeelDefaults

      public static UIDefaults  getLookAndFeelDefaults()
      从安装外观时获得的当前外观返回 UIDefaults

      一般来说,开发人员应该使用从 getDefaults() 返回的 UIDefaults 。由于当前的外观可能期望某些值存在,因此更改从此方法返回的 UIDefaults 可能会产生意想不到的结果。

      返回:
      UIDefaults 从当前的外观和感觉
      参见:
    • addAuxiliaryLookAndFeel

      public static void addAuxiliaryLookAndFeel(LookAndFeel  laf)
      在辅助外观列表中添加 LookAndFeel。辅助外观告诉多路复用外观,在创建多路复用 UI 时,除了默认的 LookAndFeel 类之外,还要使用组件实例的其他 LookAndFeel 类。只有在创建新的 UI 类或更改组件实例的默认外观时,更改才会生效。

      请注意,这些与安装的外观不同。

      参数:
      laf - LookAndFeel 对象
      参见:
    • removeAuxiliaryLookAndFeel

      public static boolean removeAuxiliaryLookAndFeel(LookAndFeel  laf)
      从辅助外观列表中删除 LookAndFeel。辅助外观告诉多路复用外观,在创建多路复用 UI 时,除了默认的 LookAndFeel 类之外,还要使用组件实例的其他 LookAndFeel 类。只有在创建新的 UI 类或更改组件实例的默认外观时,更改才会生效。

      请注意,这些与安装的外观不同。

      参数:
      laf - 要删除的 LookAndFeel
      返回:
      如果 LookAndFeel 已从列表中删除,则为真
      参见:
    • getAuxiliaryLookAndFeels

      public static LookAndFeel [] getAuxiliaryLookAndFeels()
      返回辅助外观列表(可以是 null )。辅助外观告诉多路复用外观,在创建多路复用 UI 时,除了默认的 LookAndFeel 类之外,还要使用组件实例的其他 LookAndFeel 类。

      请注意,这些与安装的外观不同。

      返回:
      辅助 LookAndFeel s 或 null 列表
      参见:
    • addPropertyChangeListener

      public static void addPropertyChangeListener(PropertyChangeListener  listener)
      PropertyChangeListener 添加到监听器列表。监听器已为所有属性注册。
      参数:
      listener - 要添加的 PropertyChangeListener
      参见:
    • removePropertyChangeListener

      public static void removePropertyChangeListener(PropertyChangeListener  listener)
      从监听器列表中删除 PropertyChangeListener。这将删除为所有属性注册的 PropertyChangeListener
      参数:
      listener - 要删除的 PropertyChangeListener
      参见:
    • getPropertyChangeListeners

      public static PropertyChangeListener [] getPropertyChangeListeners()
      返回使用 addPropertyChangeListener() 添加到此 UIManager 的所有 PropertyChangeListener 的数组。
      返回:
      添加所有 PropertyChangeListener 或如果未添加任何监听器,则为空数组
      自从:
      1.4