- 所有已实现的接口:
Serializable
UIManager 管理当前外观、可用外观集、外观更改时通知的 PropertyChangeListeners、外观默认值以及获取各种默认值的便捷方法。
指定外观
外观可以通过两种不同的方式指定:通过为外观指定类的完全限定名称,或者通过创建LookAndFeel 的实例并将其传递给 setLookAndFeel 。以下示例说明了将外观设置为系统外观:
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());以下示例说明了根据类名设置外观:
UIManager.setLookAndFeel("javax.swing.plaf.metal.MetalLookAndFeel");
一旦更改了外观,就必须在所有 JComponents 上调用 updateUI。 SwingUtilities.updateComponentTreeUI(java.awt.Component) 方法可以轻松地将 updateUI 应用于包含层次结构。详情请参阅。未指定更改外观后不调用 updateUI 的确切行为。很可能会收到意想不到的异常、绘画问题或更糟的情况。
默认外观
用于默认外观的类按以下方式选择:- 如果系统属性
swing.defaultlaf是non-null,使用它的值作为默认的外观类名。 - 如果
Properties文件swing.properties存在并包含键swing.defaultlaf,则使用它的值作为默认外观类名。检查swing.properties的位置可能因 Java 平台的实现而异。通常,swing.properties文件位于 Java 安装目录的conf子目录中。有关更多详细信息,请参阅所用实现的发行说明。 - 否则使用跨平台外观。
默认值
UIManager 管理三套 UIDefaults 。按顺序,它们是:
- 开发者默认。除了少数异常,Swing 不会改变开发人员的默认设置;这些旨在供开发人员修改和使用。
- 外观默认。外观默认值由安装时的外观提供为当前外观(
setLookAndFeel()被调用)。可以使用getLookAndFeelDefaults()方法获取外观默认值。 - 系统默认值。系统默认值由 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
-
内部类总结
内部类 -
构造方法总结
构造方法 -
方法总结
修饰符和类型方法描述static void在辅助外观列表中添加LookAndFeel。static void将PropertyChangeListener添加到监听器列表。static LookAndFeelcreateLookAndFeel(String name) 创建由给定的L&F name名称指定的受支持的内置 JavaLookAndFeel。static Object从默认值返回一个对象。static Object从适合给定locale的默认值中返回一个对象。static LookAndFeel[]返回辅助外观列表(可以是null)。static booleangetBoolean(Object key) 从与键值关联的默认值返回一个boolean。static booleangetBoolean(Object key, Locale l) 从与键值和给定Locale关联的默认值返回一个boolean。static Border从默认值返回边框。static Border从适合给定locale的默认值返回边框。static Color从默认值返回颜色。static Color从适合给定locale的默认值返回颜色。static String返回实现默认跨平台观感的LookAndFeel类的名称——Java 观感 (JLF)。static UIDefaults返回默认值。static DimensiongetDimension(Object key) 从默认值返回一个维度。static DimensiongetDimension(Object key, Locale l) 从适合给定locale的默认值中返回一个维度。static Font从默认值返回字体。static Font从适合给定locale的默认值返回字体。static Icon从默认值返回一个Icon。static Icon从适合给定locale的默认值返回一个Icon。static Insets从默认值返回一个Insets对象。static Insets从适合给定locale的默认值返回一个Insets对象。static UIManager.LookAndFeelInfo[]返回代表当前可用的LookAndFeel实现的LookAndFeelInfo数组。static int从默认值返回一个整数。static int从适合给定locale的默认值中返回一个整数。static LookAndFeel返回当前外观或null。static UIDefaults从安装外观时获得的当前外观返回UIDefaults。static PropertyChangeListener[]返回使用 addPropertyChangeListener() 添加到此 UIManager 的所有PropertyChangeListener的数组。static String从默认值返回一个字符串。static String从适合给定locale的默认值中返回一个字符串。static String如果存在,则返回实现本机系统外观的LookAndFeel类的名称,否则返回默认跨平台LookAndFeel类的名称。static ComponentUIgetUI(JComponent target) 返回target的适当ComponentUI实现。static voidinstallLookAndFeel(String name, String className) 将指定的外观添加到可用外观的集合中。static void将指定的外观添加到可用外观的集合中。static Object将对象存储在开发人员默认值中。static boolean从辅助外观列表中删除LookAndFeel。static void从监听器列表中删除PropertyChangeListener。static void设置一组可用的外观。static voidsetLookAndFeel(String className) 使用当前线程的上下文类加载器加载给定类名指定的LookAndFeel,并将其传递给setLookAndFeel(LookAndFeel)。static voidsetLookAndFeel(LookAndFeel newLookAndFeel) 将当前外观设置为newLookAndFeel。
-
构造方法详细信息
-
UIManager
public UIManager()构造一个UIManager
-
-
方法详情
-
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- 如果infos是nullSecurityException- 参见:
-
installLookAndFeel
将指定的外观添加到可用外观的集合中。虽然此方法允许使用nullinfo,但强烈建议使用non-null值。- 参数:
info- 命名外观并标识实现它的类的LookAndFeelInfo对象- 参见:
-
installLookAndFeel
将指定的外观添加到可用外观的集合中。虽然此方法不会以任何方式检查参数,但强烈建议提供non-null值。- 参数:
name- 外观的描述性名称className- 实现外观的类的名称- 参见:
-
getLookAndFeel
返回当前外观或null。- 返回:
-
当前的外观,或
null - 参见:
-
createLookAndFeel
创建由给定的L&F name名称指定的受支持的内置 JavaLookAndFeel。- 参数:
name- 一个String指定内置外观的名称- 返回:
-
内置的
LookAndFeel对象 - 抛出:
NullPointerException- 如果name是nullUnsupportedLookAndFeelException- 如果找不到给定名称的内置 JavaL&F或者底层平台不支持它- 自从:
- 9
- 参见:
-
setLookAndFeel
public static void setLookAndFeel(LookAndFeel newLookAndFeel) throws UnsupportedLookAndFeelException 将当前外观设置为newLookAndFeel。如果当前外观是non-nulluninitialize就调用它。如果newLookAndFeel是non-null,则在其上调用initialize,然后调用getDefaults。从newLookAndFeel.getDefaults()返回的默认值替换了以前外观的默认值。如果newLookAndFeel是null,则外观默认设置为null。值
null可用于将外观设置为null。由于大多数 Swing 功能都需要LookAndFeel,因此强烈建议不要将LookAndFeel设置为null。这是一个 JavaBeans 绑定属性。
- 参数:
newLookAndFeel-LookAndFeel安装- 抛出:
UnsupportedLookAndFeelException- 如果newLookAndFeel是non-null并且newLookAndFeel.isSupportedLookAndFeel()返回false- 参见:
-
setLookAndFeel
public static void setLookAndFeel(String className) throws ClassNotFoundException , InstantiationException , IllegalAccessException , UnsupportedLookAndFeelException 使用当前线程的上下文类加载器加载给定类名指定的LookAndFeel,并将其传递给setLookAndFeel(LookAndFeel)。- 参数:
className- 一个字符串,指定实现外观的类的名称- 抛出:
ClassNotFoundException- 如果找不到LookAndFeel类InstantiationException- 如果无法创建该类的新实例IllegalAccessException- 如果类或初始化程序不可访问UnsupportedLookAndFeelException- 如果lnf.isSupportedLookAndFeel()为假ClassCastException- 如果className没有识别扩展LookAndFeel的类NullPointerException- 如果className是null
-
getSystemLookAndFeelClassName
如果存在,则返回实现本机系统外观的LookAndFeel类的名称,否则返回默认跨平台LookAndFeel类的名称。可以通过设置swing.systemlaf系统属性来覆盖此值。- 返回:
LookAndFeel类的String- 参见:
-
getCrossPlatformLookAndFeelClassName
返回实现默认跨平台观感的LookAndFeel类的名称——Java 观感 (JLF)。可以通过设置swing.crossplatformlaf系统属性来覆盖此值。- 返回:
- 带有 JLF 实现类的字符串
- 参见:
-
getDefaults
返回默认值。返回的默认值使用类文档中指定的逻辑解析。- 返回:
-
包含默认值的
UIDefaults对象
-
getFont
从默认值返回字体。如果key的值不是Font,则返回null。- 参数:
key- 一个Object指定字体- 返回:
Font对象- 抛出:
NullPointerException- 如果key是null
-
getFont
从适合给定locale的默认值返回字体。如果key的值不是Font,则返回null。- 参数:
key- 一个Object指定字体l- 需要字体的Locale;有关如何处理nullLocale的详细信息,请参阅UIDefaults- 返回:
Font对象- 抛出:
NullPointerException- 如果key是null- 自从:
- 1.4
-
getColor
从默认值返回颜色。如果key的值不是Color,则返回null。- 参数:
key- 一个Object指定颜色- 返回:
Color对象- 抛出:
NullPointerException- 如果key是null
-
getColor
从适合给定locale的默认值返回颜色。如果key的值不是Color,则返回null。- 参数:
key- 一个Object指定颜色l- 需要颜色的Locale;有关如何处理nullLocale的详细信息,请参阅UIDefaults- 返回:
Color对象- 抛出:
NullPointerException- 如果key是null- 自从:
- 1.4
-
getIcon
从默认值返回一个Icon。如果key的值不是Icon,则返回null。- 参数:
key- 一个Object指定图标- 返回:
Icon对象- 抛出:
NullPointerException- 如果key是null
-
getIcon
从适合给定locale的默认值返回一个Icon。如果key的值不是Icon,则返回null。- 参数:
key- 一个Object指定图标l- 需要图标的Locale;有关如何处理nullLocale的详细信息,请参阅UIDefaults- 返回:
Icon对象- 抛出:
NullPointerException- 如果key是null- 自从:
- 1.4
-
getBorder
从默认值返回边框。如果key的值不是Border,则返回null。- 参数:
key- 一个Object指定边框- 返回:
Border对象- 抛出:
NullPointerException- 如果key是null
-
getBorder
从适合给定locale的默认值返回边框。如果key的值不是Border,则返回null。- 参数:
key- 一个Object指定边框l- 需要边框的Locale;有关如何处理nullLocale的详细信息,请参阅UIDefaults- 返回:
Border对象- 抛出:
NullPointerException- 如果key是null- 自从:
- 1.4
-
getString
从默认值返回一个字符串。如果key的值不是String,则返回null。- 参数:
key- 一个Object指定字符串- 返回:
String- 抛出:
NullPointerException- 如果key是null
-
getString
从适合给定locale的默认值中返回一个字符串。如果key的值不是String,则返回null。- 参数:
key- 一个Object指定字符串l- 需要字符串的Locale;有关如何处理nullLocale的详细信息,请参阅UIDefaults- 返回:
String- 抛出:
NullPointerException- 如果key是null- 自从:
- 1.4
-
getInt
从默认值返回一个整数。如果key的值不是Integer或不存在,则返回0。- 参数:
key- 一个Object指定 int- 返回:
- 整数
- 抛出:
NullPointerException- 如果key是null
-
getInt
从适合给定locale的默认值中返回一个整数。如果key的值不是Integer或不存在,则返回0。- 参数:
key- 一个Object指定 intl- 需要 int 的Locale;有关如何处理nullLocale的详细信息,请参阅UIDefaults- 返回:
- 整数
- 抛出:
NullPointerException- 如果key是null- 自从:
- 1.4
-
getBoolean
从与键值关联的默认值返回一个boolean。如果未找到密钥或密钥不代表boolean,则返回false。- 参数:
key- 一个Object为所需的boolean指定键- 返回:
- 键对应的boolean
- 抛出:
NullPointerException- 如果key是null- 自从:
- 1.4
-
getBoolean
从与键值和给定Locale关联的默认值返回一个boolean。如果未找到密钥或密钥不代表boolean,则将返回false。- 参数:
key- 一个Object为所需的boolean指定键l- 需要boolean的Locale;有关如何处理nullLocale的详细信息,请参阅UIDefaults- 返回:
- 键对应的boolean
- 抛出:
NullPointerException- 如果key是null- 自从:
- 1.4
-
getInsets
从默认值返回一个Insets对象。如果key的值不是Insets,则返回null。- 参数:
key- 一个Object指定Insets对象- 返回:
Insets对象- 抛出:
NullPointerException- 如果key是null
-
getInsets
从适合给定locale的默认值返回一个Insets对象。如果key的值不是Insets,则返回null。- 参数:
key- 一个Object指定Insets对象l- 需要对象的Locale;有关如何处理nullLocale的详细信息,请参阅UIDefaults- 返回:
Insets对象- 抛出:
NullPointerException- 如果key是null- 自从:
- 1.4
-
getDimension
从默认值返回一个维度。如果key的值不是Dimension,则返回null。- 参数:
key- 一个Object指定维度对象- 返回:
Dimension对象- 抛出:
NullPointerException- 如果key是null
-
getDimension
从适合给定locale的默认值中返回一个维度。如果key的值不是Dimension,则返回null。- 参数:
key- 一个Object指定维度对象l- 需要对象的Locale;有关如何处理nullLocale的详细信息,请参阅UIDefaults- 返回:
Dimension对象- 抛出:
NullPointerException- 如果key是null- 自从:
- 1.4
-
get
从默认值返回一个对象。- 参数:
key- 一个Object指定所需的对象- 返回:
Object- 抛出:
NullPointerException- 如果key是null
-
get
从适合给定locale的默认值中返回一个对象。- 参数:
key- 一个Object指定所需的对象l- 需要对象的Locale;有关如何处理nullLocale的详细信息,请参阅UIDefaults- 返回:
Object- 抛出:
NullPointerException- 如果key是null- 自从:
- 1.4
-
put
将对象存储在开发人员默认值中。这是getDefaults().put(key, value)的覆盖方法。这只会影响开发人员的默认设置,不会影响系统或外观默认设置。- 参数:
key- 一个Object指定检索键value- 要存储的Object;有关如何处理null的详细信息,请参阅UIDefaults- 返回:
UIDefaults.put(java.lang.Object, java.lang.Object)返回的Object- 抛出:
NullPointerException- 如果key是null- 参见:
-
getUI
返回target的适当ComponentUI实现。通常,这是getDefaults().getUI(target)的封面。但是,如果已安装辅助外观,这首先会在多路复用外观的默认值上调用getUI(target),如果它是non-null,则返回该值。- 参数:
target- 返回ComponentUI的JComponent- 返回:
target的ComponentUI对象- 抛出:
NullPointerException- 如果target是null- 参见:
-
getLookAndFeelDefaults
从安装外观时获得的当前外观返回UIDefaults。一般来说,开发人员应该使用从
getDefaults()返回的UIDefaults。由于当前的外观可能期望某些值存在,因此更改从此方法返回的UIDefaults可能会产生意想不到的结果。- 返回:
UIDefaults从当前的外观和感觉- 参见:
-
addAuxiliaryLookAndFeel
在辅助外观列表中添加LookAndFeel。辅助外观告诉多路复用外观,在创建多路复用 UI 时,除了默认的LookAndFeel类之外,还要使用组件实例的其他LookAndFeel类。只有在创建新的 UI 类或更改组件实例的默认外观时,更改才会生效。请注意,这些与安装的外观不同。
- 参数:
laf-LookAndFeel对象- 参见:
-
removeAuxiliaryLookAndFeel
从辅助外观列表中删除LookAndFeel。辅助外观告诉多路复用外观,在创建多路复用 UI 时,除了默认的LookAndFeel类之外,还要使用组件实例的其他LookAndFeel类。只有在创建新的 UI 类或更改组件实例的默认外观时,更改才会生效。请注意,这些与安装的外观不同。
- 参数:
laf- 要删除的LookAndFeel- 返回:
-
如果
LookAndFeel已从列表中删除,则为真 - 参见:
-
getAuxiliaryLookAndFeels
返回辅助外观列表(可以是null)。辅助外观告诉多路复用外观,在创建多路复用 UI 时,除了默认的 LookAndFeel 类之外,还要使用组件实例的其他LookAndFeel类。请注意,这些与安装的外观不同。
- 返回:
-
辅助
LookAndFeels 或null列表 - 参见:
-
addPropertyChangeListener
将PropertyChangeListener添加到监听器列表。监听器已为所有属性注册。- 参数:
listener- 要添加的PropertyChangeListener- 参见:
-
removePropertyChangeListener
从监听器列表中删除PropertyChangeListener。这将删除为所有属性注册的PropertyChangeListener。- 参数:
listener- 要删除的PropertyChangeListener- 参见:
-
getPropertyChangeListeners
返回使用 addPropertyChangeListener() 添加到此 UIManager 的所有PropertyChangeListener的数组。- 返回:
-
添加所有
PropertyChangeListener或如果未添加任何监听器,则为空数组 - 自从:
- 1.4
-