- 所有已实现的接口:
-
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不为null,则将其值用作默认外观和感觉类名。 - 如果存在包含键
swing.defaultlaf的Properties文件swing.properties,则将其值用作默认外观和感觉类名。检查swing.properties的位置可能会根据 Java 平台的实现而有所不同。通常,swing.properties文件位于 Java 安装目录的conf子目录中。有关详细信息,请参考正在使用的实现的发行说明。 - 否则使用跨平台外观和感觉。
UIManager 管理三组 UIDefaults。依次为:
- 开发者默认值。除了少数例外,Swing 不会更改开发者默认值; 这些默认值旨在由开发者修改和使用。
- 外观和感觉默认值。外观和感觉默认值由安装为当前外观和感觉时的外观和感觉提供 (
setLookAndFeel() 被调用)。可以使用 getLookAndFeelDefaults() 方法获取外观和感觉默认值。
- 系统默认值。系统默认值由 Swing 提供。
调用任何 get 方法都会依次检查每个默认值,返回第一个 non-null 值。例如,调用 UIManager.getString("Table.foreground") 首先检查开发者默认值。如果开发者默认值包含 "Table.foreground" 的值,则返回该值,否则检查外观和感觉默认值,然后是系统默认值。
setLookAndFeel() 被调用)。可以使用 getLookAndFeelDefaults() 方法获取外观和感觉默认值。重要的是要注意,getDefaults 返回一个具有此解析逻辑的自定义 UIDefaults 实例。例如,UIManager.getDefaults().getString("Table.foreground") 等同于 UIManager.getString("Table.foreground")。两者都使用刚才描述的算法进行解析。在许多地方,文档使用单词默认值来指代具有先前描述的解析逻辑的自定义 UIDefaults 实例。
当更改外观和感觉时,UIManager 仅会更改外观和感觉默认值; 开发者和系统默认值不会以任何方式被 UIManager 更改。
特定外观和感觉支持的默认值集由该外观和感觉定义和记录。此外,每个外观和感觉,或由外观和感觉提供的 ComponentUI,可能在其生命周期的不同时间访问默认值。某些外观和感觉可能会积极地查找默认值,因此更改默认值可能在安装外观和感觉后不起作用。其他外观和感觉可能会懒惰地访问默认值,因此更改默认值可能会影响现有的外观和感觉。最后,其他外观和感觉可能根本不会从默认表中配置自己。尽管如此,通常情况下,外观和感觉期望某些默认值,因此通常情况下,由一个外观和感觉提供的 ComponentUI 不会与另一个外观和感觉一起使用。
警告: 此类的序列化对象将不兼容未来的 Swing 版本。当前的序列化支持适用于短期存储或在运行相同版本的 Swing 的应用程序之间的 RMI。从 1.4 版开始,已将所有 JavaBeans 的长期存储支持添加到 java.beans 包中。请参阅 XMLEncoder。
- 自:
- 1.2
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic class为配置菜单或初始应用程序设置而提供有关已安装的LookAndFeel的一些信息。 -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic void将一个LookAndFeel添加到辅助外观和感觉列表中。static void将一个PropertyChangeListener添加到监听器列表中。static LookAndFeelcreateLookAndFeel(String name) 创建一个由给定L&F name名称指定的支持的内置 JavaLookAndFeel。static Object从默认值返回一个对象。static Object返回适合给定区域设置的默认值中的对象。static LookAndFeel[]返回辅助外观和感觉的列表 (可以为null)。static booleangetBoolean(Object key) 返回与键值关联的默认值中的布尔值。static booleangetBoolean(Object key, Locale l) 返回与键值和给定Locale关联的默认值中的布尔值。static Border从默认值返回一个边框。static Border返回适合给定区域设置的默认值中的边框。static Color从默认值返回一个颜色。static Color返回适合给定区域设置的默认值中的颜色。static String返回实现默认跨平台外观和感觉 -- Java 外观和感觉 (JLF) 的LookAndFeel类的名称。static UIDefaults返回默认值。static DimensiongetDimension(Object key) 从默认值返回一个尺寸。static DimensiongetDimension(Object key, Locale l) 返回适合给定区域设置的默认值中的尺寸。static Font从默认值返回一个字体。static Font返回适合给定区域设置的默认值中的字体。static Icon从默认值返回一个Icon。static Icon返回适合给定区域设置的默认值中的Icon。static Insets从默认值返回一个Insets对象。static Insets返回适合给定区域设置的默认值中的Insets对象。static UIManager.LookAndFeelInfo[]返回当前可用的LookAndFeel实现的LookAndFeelInfo数组。static int从默认值返回一个整数。static int返回适合给定区域设置的默认值中的整数。static LookAndFeel返回当前外观和感觉或null。static UIDefaults返回当前外观和感觉的UIDefaults,这些默认值是在安装外观和感觉时获取的。static PropertyChangeListener[]返回添加到此 UIManager 中的所有PropertyChangeListener的数组。static String从默认值返回一个字符串。static String返回适合给定区域设置的默认值中的字符串。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。
-
Constructor Details
-
UIManager
public UIManager()构造一个UIManager。
-
-
Method Details
-
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为null -
SecurityException - 参见:
-
installLookAndFeel
将指定的外观添加到可用外观集合中。虽然此方法允许null的info,但强烈建议使用非null值。- 参数:
-
info- 一个命名外观并标识实现它的类的LookAndFeelInfo对象 - 参见:
-
installLookAndFeel
将指定的外观添加到可用外观集合中。虽然此方法不会以任何方式检查参数,但强烈建议提供非null值。- 参数:
-
name- 外观的描述性名称 -
className- 实现外观的类的名称 - 参见:
-
getLookAndFeel
返回当前外观或null。- 返回:
-
当前外观,或
null - 参见:
-
createLookAndFeel
创建一个由给定的L&F name指定的受支持的内置JavaLookAndFeel。- 参数:
-
name- 指定内置外观名称的String - 返回:
-
内置
LookAndFeel对象 - 抛出:
-
NullPointerException- 如果name为null -
UnsupportedLookAndFeelException- 如果给定名称找不到或不受底层平台支持的内置JavaL&F - 自:
- 9
- 参见:
-
setLookAndFeel
public static void setLookAndFeel(LookAndFeel newLookAndFeel) throws UnsupportedLookAndFeelException 将当前外观设置为newLookAndFeel。如果当前外观为非null,则在其上调用uninitialize。如果newLookAndFeel为非null,则在其上调用initialize,然后调用getDefaults。从newLookAndFeel.getDefaults()返回的默认值将取代先前外观的默认值。如果newLookAndFeel为null,则外观默认值将设置为null。可以使用
null值将外观设置为null。由于大多数Swing功能都需要LookAndFeel,因此强烈不建议将LookAndFeel设置为null。这是一个JavaBeans绑定属性。
- 参数:
-
newLookAndFeel- 要安装的LookAndFeel - 抛出:
-
UnsupportedLookAndFeelException- 如果newLookAndFeel为非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()为false -
ClassCastException- 如果className不标识扩展LookAndFeel的类 -
NullPointerException- 如果className为null
-
getSystemLookAndFeelClassName
如果存在本地系统外观实现,则返回实现该外观的LookAndFeel类的名称,否则返回默认跨平台LookAndFeel类的名称。可以通过设置swing.systemlaf系统属性来覆盖此值。- 返回:
-
LookAndFeel类的String - 参见:
-
getCrossPlatformLookAndFeelClassName
返回实现默认跨平台外观(JLF)的LookAndFeel类的名称。可以通过设置swing.crossplatformlaf系统属性来覆盖此值。- 返回:
- JLF实现类的字符串
- 参见:
-
getDefaults
返回默认值。返回的默认值使用类文档中指定的逻辑解析。- 返回:
-
包含默认值的
UIDefaults对象
-
getFont
从默认值返回一个字体。如果key的值不是Font,则返回null。- 参数:
-
key- 指定字体的Object - 返回:
-
Font对象 - 抛出:
-
NullPointerException- 如果key为null
-
getFont
返回适合给定区域设置的默认值中的字体。如果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
返回适合给定区域设置的默认值中的颜色。如果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
从默认值返回适合给定区域设置的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
从默认值返回适合给定区域设置的边框。如果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
从默认值返回适合给定区域设置的字符串。如果key的值不是String,则返回null。- 参数:
-
key- 指定字符串的Object -
l- 所需字符串的Locale;有关如何处理nullLocale的详细信息,请参阅UIDefaults - 返回:
-
String - 抛出:
-
NullPointerException- 如果key为null - 自版本:
- 1.4
-
getInt
从默认值返回一个整数。如果key的值不是Integer,或者不存在,则返回0。- 参数:
-
key- 指定整数的Object - 返回:
- 整数
- 抛出:
-
NullPointerException- 如果key为null
-
getInt
从默认值返回适合给定区域设置的整数。如果key的值不是Integer,或者不存在,则返回0。- 参数:
-
key- 指定整数的Object -
l- 所需整数的Locale;有关如何处理nullLocale的详细信息,请参阅UIDefaults - 返回:
- 整数
- 抛出:
-
NullPointerException- 如果key为null - 自版本:
- 1.4
-
getBoolean
从默认值返回与键值关联的布尔值。如果未找到键或键不表示布尔值,则返回false。- 参数:
-
key- 指定所需布尔值的键的Object - 返回:
- 与键对应的布尔值
- 抛出:
-
NullPointerException- 如果key为null - 自版本:
- 1.4
-
getBoolean
从默认值返回与键值和给定Locale关联的布尔值。如果未找到键或键不表示布尔值,则返回false。- 参数:
-
key- 指定所需布尔值的键的Object -
l- 所需布尔值的Locale;有关如何处理nullLocale的详细信息,请参阅UIDefaults - 返回:
- 与键对应的布尔值
- 抛出:
-
NullPointerException- 如果key为null - 自版本:
- 1.4
-
getInsets
从默认值返回一个Insets对象。如果key的值不是Insets,则返回null。- 参数:
-
key- 指定Insets对象的Object - 返回:
-
Insets对象 - 抛出:
-
NullPointerException- 如果key为null
-
getInsets
从默认值返回适合给定区域设置的Insets对象。如果key的值不是Insets,则返回null。- 参数:
-
key- 指定Insets对象的Object -
l- 所需对象的Locale;有关如何处理nullLocale的详细信息,请参阅UIDefaults - 返回:
-
Insets对象 - 抛出:
-
NullPointerException- 如果key为null - 自版本:
- 1.4
-
getDimension
从默认值返回一个Dimension对象。如果key的值不是Dimension,则返回null。- 参数:
-
key- 指定维度对象的Object - 返回:
-
Dimension对象 - 抛出:
-
NullPointerException- 如果key为null
-
getDimension
从默认值返回适合给定区域设置的Dimension对象。如果key的值不是Dimension,则返回null。- 参数:
-
key- 指定维度对象的Object -
l- 所需对象的Locale;有关如何处理nullLocale的详细信息,请参阅UIDefaults - 返回:
-
Dimension对象 - 抛出:
-
NullPointerException- 如果key为null - 自版本:
- 1.4
-
get
从默认值返回一个对象。- 参数:
-
key- 指定所需对象的Object - 返回:
-
Object - 抛出:
-
NullPointerException- 如果key为null
-
get
从默认值返回适合给定区域设置的对象。- 参数:
-
key- 指定所需对象的Object -
l- 所需对象的Locale;有关如何处理nullLocale的详细信息,请参阅UIDefaults - 返回:
-
Object - 抛出:
-
NullPointerException- 如果key为null - 自版本:
- 1.4
-
put
在开发者默认值中存储一个对象。这是getDefaults().put(key, value)的封装方法。这仅影响开发者默认值,而不影响系统或外观默认值。- 参数:
-
key- 一个指定检索键的Object -
value- 要存储的Object;参考UIDefaults以了解如何处理null - 返回:
-
由
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,这些UIDefaults是在安装外观时获取的。一般来说,开发人员应该使用从
getDefaults()返回的UIDefaults。由于当前外观可能期望某些值存在,修改从此方法返回的UIDefaults可能会导致意外结果。- 返回:
-
当前外观的
UIDefaults - 参见:
-
addAuxiliaryLookAndFeel
将一个LookAndFeel添加到辅助外观列表中。辅助外观告诉多路复用外观在创建多路复用UI时,除了默认的LookAndFeel类之外,还应该使用哪些组件实例的其他LookAndFeel类。更改只有在创建新的UI类或在组件实例上更改默认外观时才会生效。请注意,这些与已安装的外观不同。
- 参数:
-
laf-LookAndFeel对象 - 参见:
-
removeAuxiliaryLookAndFeel
从辅助外观列表中移除一个LookAndFeel。辅助外观告诉多路复用外观在创建多路复用UI时,除了默认的LookAndFeel类之外,还应该使用哪些组件实例的其他LookAndFeel类。更改只有在创建新的UI类或在组件实例上更改默认外观时才会生效。请注意,这些与已安装的外观不同。
- 参数:
-
laf- 要移除的LookAndFeel - 返回:
-
如果从列表中移除了
LookAndFeel,则返回true - 参见:
-
getAuxiliaryLookAndFeels
返回辅助外观列表(可以为null)。辅助外观告诉多路复用外观在创建多路复用UI时,除了默认的外观类之外,还应该使用哪些组件实例的其他外观类。请注意,这些与已安装的外观不同。
- 返回:
-
辅助
LookAndFeel的列表或null - 参见:
-
addPropertyChangeListener
将一个PropertyChangeListener添加到监听器列表中。该监听器将注册所有属性。- 参数:
-
listener- 要添加的PropertyChangeListener - 参见:
-
removePropertyChangeListener
从监听器列表中移除一个PropertyChangeListener。这将移除为所有属性注册的PropertyChangeListener。- 参数:
-
listener- 要移除的PropertyChangeListener - 参见:
-
getPropertyChangeListeners
返回添加到此UIManager中的所有PropertyChangeListener的数组。- 返回:
-
所有已添加的
PropertyChangeListener的数组,如果没有添加监听器,则返回空数组 - 自1.4起:
- 1.4
-