Module  java.desktop
软件包  javax.swing

Class UIManager

  • All Implemented Interfaces:
    Serializable


    public class UIManager
    extends Object
    implements Serializable
    UIManager管理当外观和感觉变化,外观和感觉默认值以及用于获得各种默认值的便利方法时通知的当前外观和感觉( PropertyChangeListeners

    指定外观和感觉

    外观和感觉可以通过两种不同的方式指定:通过为外观指定类的完全限定名称,或者创建一个LookAndFeel的实例并将其传递给setLookAndFeel 以下示例说明了设置外观和感觉的系统外观:
      UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); 
    以下示例说明了根据类名设置外观:
      UIManager.setLookAndFeel("javax.swing.plaf.metal.MetalLookAndFeel"); 
    一旦外观和感觉已经改变了它必须调用updateUI所有JComponents 方法SwingUtilities.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返回一个getDefaults的自定义实例,其中UIDefaults了此分辨率逻辑。 例如, UIManager.getDefaults().getString("Table.foreground")相当于UIManager.getString("Table.foreground") 两者都使用刚刚描述的算法来解决。 在许多地方,文档使用默认值来引用具有UIDefaults的分辨率逻辑的自定义实例UIDefaults

    当外观和感觉改变时, UIManager改变外观和默认值; 开发人员和系统默认值不会被UIManager以任何方式更改。

    一组特定的外观和感觉支持的默认值由该外观和感觉定义和记录。 此外,每个外观和感觉,或ComponentUI由外观所提供,可以访问在不同时间的默认值在其生命周期。 有些外观和感觉可能会积极地查看默认值,因此更改默认值可能在安装外观后可能没有影响。 其他外观和感觉可能会懒惰地访问默认值,以便更改默认值可能会影响现有的外观和感觉。 最后,其他外观和感觉可能无法以默认方式配置自己。 通常情况下,外观和感觉预期会出现某些默认值,因此一般来说,一个ComponentUI由一个外观和感觉提供,将无法与另一种外观和感觉一起使用。

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

    从以下版本开始:
    1.2
    另请参见:
    Serialized Form
    • 构造方法详细信息

      • UIManager

        public UIManager​()
    • 方法详细信息

      • getInstalledLookAndFeels

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

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

          UIManager.setLookAndFeel(info.getClassName()); 
        结果
        一组 LookAndFeelInfo对象
        另请参见:
        setLookAndFeel(javax.swing.LookAndFeel)
      • installLookAndFeel

        public static void installLookAndFeel​(String name,
                                              String className)
        添加指定的外观和感觉的一套可用的外观和感觉。 虽然此方法不以任何方式检查参数,但强烈建议提供non-null值。
        参数
        name - 外观的描述性名称
        className - 实现外观的类的名称
        另请参见:
        setInstalledLookAndFeels(javax.swing.UIManager.LookAndFeelInfo[])
      • setLookAndFeel

        public static void setLookAndFeel​(LookAndFeel newLookAndFeel)
                                   throws UnsupportedLookAndFeelException
        将当前的外观设置为newLookAndFeel 如果目前的外观和感觉是non-null uninitialize可以调用uninitialize 如果newLookAndFeelnon-nullinitialize被调用就可以了,随后getDefaults newLookAndFeel.getDefaults()返回的默认值替换了之前的外观和默认值。 如果newLookAndFeelnull ,则外观和默认值设置为null

        可以使用null的值将其外观设置为null 由于LookAndFeel所需的大多数Swing的运行,设置LookAndFeelnull强烈反对。

        这是一个JavaBeans绑定属性。

        参数
        newLookAndFeel - LookAndFeel要安装
        异常
        UnsupportedLookAndFeelException - 如果 newLookAndFeelnon-nullnewLookAndFeel.isSupportedLookAndFeel()返回 false
        另请参见:
        getLookAndFeel()
      • getSystemLookAndFeelClassName

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

        public static String getCrossPlatformLookAndFeelClassName​()
        返回实现默认跨平台外观的LookAndFeel类的名称--Java Look and Feel(JLF)。 该值可以通过设置swing.crossplatformlaf系统属性来覆盖。
        结果
        一个带有JLF实现类的字符串
        另请参见:
        setLookAndFeel(javax.swing.LookAndFeel)getSystemLookAndFeelClassName()
      • 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)
        从适用于给定语言环境的默认值返回一个字体。 如果key的值不是Font ,则返回null
        参数
        key - 一个 Object指定字体
        l - 需要字体的Locale ; 参考UIDefaults的细节上如何null Locale被处理
        结果
        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)
        从适用于给定语言环境的默认值返回颜色。 如果key的值不是Color ,则返回null
        参数
        key - 一个 Object指定颜色
        l - 需要颜色的Locale ; 参考UIDefaults的细节上如何null Locale被处理
        结果
        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)
        从适用于给定语言环境的默认值返回Icon 如果key的值不是Icon ,则返回null
        参数
        key - 指定图标的 Object
        l - 需要图标的Locale ; 参考UIDefaults的细节上如何null Locale被处理
        结果
        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)
        从适用于给定语言环境的默认值返回一个边框。 如果key的值不是Border ,则返回null
        参数
        key - 一个指定边框的 Object
        l - 希望有边界的Locale ; 参考UIDefaults的细节上如何null Locale被处理
        结果
        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)
        从适用于给定语言环境的默认值返回一个字符串。 如果key的值不是String ,则返回null
        参数
        key - 一个 Object指定字符串
        l - 需要字符串的Locale ; 参考UIDefaults的细节上如何null Locale被处理
        结果
        String
        异常
        NullPointerException - 如果 keynull
        从以下版本开始:
        1.4
      • getInt

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

        public static int getInt​(Object key,
                                 Locale l)
        从适用于给定语言环境的默认值返回一个整数。 如果key的值不是Integer ,或者不存在,则返回0
        参数
        key - 一个 Object指定int
        l - 需要int的Locale ; 有关如何处理null Locale详细信息,请参阅UIDefaults
        结果
        int
        异常
        NullPointerException - 如果 keynull
        从以下版本开始:
        1.4
      • getBoolean

        public static boolean getBoolean​(Object key)
        从与键值相关联的默认值返回一个布尔值。 如果未找到密钥或密钥不表示布尔值,则返回false
        参数
        key - 一个指定所需布尔值的键的 Object
        结果
        对应于该键的布尔值
        异常
        NullPointerException - 如果 keynull
        从以下版本开始:
        1.4
      • getBoolean

        public static boolean getBoolean​(Object key,
                                         Locale l)
        从与键值和给定的Locale相关联的默认值返回一个布尔值。 如果未找到密钥或密钥不表示布尔值,则将返回false
        参数
        key - 一个指定所需布尔值的键的 Object
        l - 需要布尔值的Locale ; 有关如何处理null Locale详细信息,请参阅UIDefaults
        结果
        对应于该键的布尔值
        异常
        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)
        从适用于给定语言环境的默认值返回Insets对象。 如果key的值不是Insets ,则返回null
        参数
        key -一个 Object指定 Insets对象
        l - 需要该对象的Locale ; 参考UIDefaults的细节上如何null Locale被处理
        结果
        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)
        从适用于给定语言环境的默认值返回维度。 如果key的值不是Dimension ,则返回null
        参数
        key - 指定维对象的 Object
        l - 需要该对象的Locale ; 参考UIDefaults的细节上如何null Locale被处理
        结果
        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)
        从适用于给定语言环境的默认值返回一个对象。
        参数
        key - 指定所需对象的 Object
        l - 需要该对象的Locale ; 有关如何处理null Locale详细信息,请参阅UIDefaults
        结果
        Object
        异常
        NullPointerException - 如果 keynull
        从以下版本开始:
        1.4
      • getUI

        public static ComponentUI getUI​(JComponent target)
        返回相应ComponentUI实施target 通常这是getDefaults().getUI(target)的封面。 然而,如果感觉已经安装了辅助外观,这首先调用getUI(target)在多路外观的默认值,如果返回值non-null
        参数
        target - JComponent返回 ComponentUI
        结果
        ComponentUI对象为 target
        异常
        NullPointerException - 如果 targetnull
        另请参见:
        UIDefaults.getUI(javax.swing.JComponent)
      • getLookAndFeelDefaults

        public static UIDefaults getLookAndFeelDefaults​()
        从当前的外观和感觉返回UIDefaults ,这是在安装外观时获得的。

        一般来说,开发商应该使用UIDefaults返回的getDefaults() 由于当前的外观和感觉可能会导致某些值存在,更改从该方法返回的UIDefaults可能会有意想不到的结果。

        结果
        UIDefaults从目前的外观和感觉
        另请参见:
        getDefaults()setLookAndFeel(LookAndFeel)LookAndFeel.getDefaults()
      • addPropertyChangeListener

        public static void addPropertyChangeListener​(PropertyChangeListener listener)
        添加一个PropertyChangeListener到监听器列表。 所有属性都注册了监听器。
        参数
        listener - 要添加的 PropertyChangeListener
        另请参见:
        PropertyChangeSupport
      • removePropertyChangeListener

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

        public static PropertyChangeListener[] getPropertyChangeListeners​()
        返回使用addPropertyChangeListener()添加到此UIManager的所有 PropertyChangeListener的数组。
        结果
        如果没有添加任何监听器,则添加所有 PropertyChangeListener s或一个空数组
        从以下版本开始:
        1.4