JavaTM Platform
Standard Ed. 6

javax.swing
类 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");
 
一旦更改了外观,则强制在所有 JComponent 上调用 updateUISwingUtilities.updateComponentTreeUI(java.awt.Component) 方法有助于方便地对包含层次结构应用 updateUI。有关详细信息,请参阅它。没有指定更改外观后不调用 updateUI 的确切行为。很有可能接收到无法预料的异常、绘制问题或更坏的情况。

默认外观

按以下方式选择用于默认外观的类:
  1. 如果系统属性 swing.defaultlaf非 null,则将其值用作默认外观类名称。
  2. 如果 Properties 文件 swing.properties 存在且包含键 swing.defaultlaf,则将其值用作默认外观类名称。用来检查 swing.properties 的位置可能随 Java 平台的实现而不同。在 Sun 的实现中,该位置位于 ${java.home}/lib/swing.properties 中。有关更多信息,请参阅所用实现的发行说明。
  3. 否则,请使用跨平台外观。

默认值

UIManager 管理 UIDefault 的三个集合。它们分别是:
  1. 开发人员默认值。由于几乎没有异常,所以 Swing 不会更改开发人员默认值;这些适合修改并由开发人员使用。
  2. 外观默认值。外观默认值在外观作为当前外观安装(调用 setLookAndFeel())时由该外观提供。使用 getLookAndFeelDefaults() 方法可以获得外观默认值。
  3. 系统默认值。系统默认值由 Swing 提供。
调用任何一个 get 方法都将导致检查每个默认值,按顺序返回第一个非 null 值。例如,调用 UIManager.getString("Table.foreground") 导致首先检查开发人员默认值。如果开发人员默认值包含 "Table.foreground" 的值,则返回该值,否则检查外观默认值,接着检查系统默认值。

要重点注意的是,getDefaults 返回 UIDefault 的一个自定义实例,此解析逻辑内置于其中。例如,UIManager.getDefaults().getString("Table.foreground") 等效于 UIManager.getString("Table.foreground")。两者都使用刚才所描述的算法进行解析。在许多地方,该文档使用字默认值查阅 UIDefaults 的自定义实例,解析逻辑如前所述。

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

该外观定义并记录特定外观支持的默认值集合。此外,每个外观或者外观所提供的 ComponentUI 在它们生命周期中的不同时间可以访问该默认值。某些外观可以强制查找默认值,这样在安装该外观后更改默认值可能无效。其他外观可以延迟访问默认值,这样对该默认值的更改可能对现有外观产生影响。最后,其他外观可能不会以任何方式根据默认表自我配置。虽然如此,但通常是外观期望特定默认值这种情况,这样在一般情况下,某个外观提供的 ComponentUI 不会对另一个外观起作用。

警告:此类的序列化对象与以后的 Swing 版本不兼容。当前序列化支持适用于短期存储,或适用于在运行相同 Swing 版本的应用程序之间进行 RMI(Remote Method Invocation,远程方法调用)。从 1.4 版本开始,已在 java.beans 包中添加了支持所有 JavaBeansTM 长期存储的功能。请参见 XMLEncoder


嵌套类摘要
static class UIManager.LookAndFeelInfo
          为了配置菜单或为了初始应用程序设置而提供关于已安装的 LookAndFeel 的少量信息。
 
构造方法摘要
UIManager()
           
 
方法摘要
static void addAuxiliaryLookAndFeel(LookAndFeel laf)
          将 LookAndFeel 添加到辅助外观的列表中。
static void addPropertyChangeListener(PropertyChangeListener listener)
          将一个 PropertyChangeListener 添加到侦听器列表。
static Object get(Object key)
          从默认值中返回一个对象。
static Object get(Object key, Locale l)
          从适合给定语言环境的默认值中返回一个对象。
static LookAndFeel[] getAuxiliaryLookAndFeels()
          返回辅助外观的列表(可以为 null)。
static boolean getBoolean(Object key)
          从与键值相关的默认值中返回一个布尔变量。
static boolean getBoolean(Object key, Locale l)
          从与键值和给定的 Locale 相关的默认值中返回一个布尔变量。
static Border getBorder(Object key)
          从默认值中返回一个边框。
static Border getBorder(Object key, Locale l)
          从适合给定语言环境的默认值中返回一个边框。
static Color getColor(Object key)
          从默认值返回一种颜色。
static Color getColor(Object key, Locale l)
          从适合给定语言环境的默认值中返回一种颜色。
static String getCrossPlatformLookAndFeelClassName()
          返回实现默认的跨平台外观 -- Java Look and Feel (JLF) -- 的 LookAndFeel 类的名称。
static UIDefaults getDefaults()
          返回该默认值。
static Dimension getDimension(Object key)
          从默认值中返回一个维数。
static Dimension getDimension(Object key, Locale l)
          从适合给定语言环境的默认值中返回一个维数。
static Font getFont(Object key)
          从默认值返回一种字体。
static Font getFont(Object key, Locale l)
          从适合给定语言环境的默认值中返回一种字体。
static Icon getIcon(Object key)
          从默认值中返回一个 Icon
static Icon getIcon(Object key, Locale l)
          从适合给定语言环境的默认值中返回一个 Icon
static Insets getInsets(Object key)
          从默认值中返回一个 Insets 对象。
static Insets getInsets(Object key, Locale l)
          从适合给定语言环境的默认值中返回一个 Insets 对象。
static UIManager.LookAndFeelInfo[] getInstalledLookAndFeels()
          返回表示当前可用的 LookAndFeel 实现的 LookAndFeelInfo 数组。
static int getInt(Object key)
          从默认值中返回一个整数。
static int getInt(Object key, Locale l)
          从适合给定语言环境的默认值中返回一个整数。
static LookAndFeel getLookAndFeel()
          返回当前外观或 null
static UIDefaults getLookAndFeelDefaults()
          从当前外观返回 UIDefaultsUIDefaults 在安装该外观时获得。
static PropertyChangeListener[] getPropertyChangeListeners()
          返回添加到此 UIManager(具有 addPropertyChangeListener())的所有 PropertyChangeListener 的数组。
static String getString(Object key)
          从默认值中返回一个字符串。
static String getString(Object key, Locale l)
          从适合给定语言环境的默认值中返回一个字符串。
static String getSystemLookAndFeelClassName()
          如果有实现本机系统外观的 LookAndFeel 类的名称,则返回该名称;否则返回默认的跨平台 LookAndFeel 类的名称。
static ComponentUI getUI(JComponent target)
          返回 target 的适当 ComponentUI 实现。
static void installLookAndFeel(String name, String className)
          将指定的外观添加到可用外观的集合中。
static void installLookAndFeel(UIManager.LookAndFeelInfo info)
          将指定的外观添加到可用外观的集合中。
static Object put(Object key, Object value)
          在开发人员默认值中存储一个对象。
static boolean removeAuxiliaryLookAndFeel(LookAndFeel laf)
          从辅助外观列表移除一个 LookAndFeel
static void removePropertyChangeListener(PropertyChangeListener listener)
          从侦听器列表移除 PropertyChangeListener
static void setInstalledLookAndFeels(UIManager.LookAndFeelInfo[] infos)
          设置可用外观的集合。
static void setLookAndFeel(LookAndFeel newLookAndFeel)
          将当前外观设置为 newLookAndFeel
static void setLookAndFeel(String className)
          使用当前线程的上下文类加载器加载给定类名称所指定的 LookAndFeel,并将它传递给 setLookAndFeel(LookAndFeel)
 
从类 java.lang.Object 继承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

构造方法详细信息

UIManager

public UIManager()
方法详细信息

getInstalledLookAndFeels

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

以下示例演示了如何根据 LookAndFeelInfo 的实例设置外观:

   UIManager.setLookAndFeel(info.getClassName());
 

返回:
LookAndFeelInfo 对象的数组
另请参见:
setLookAndFeel(javax.swing.LookAndFeel)

setInstalledLookAndFeels

public static void setInstalledLookAndFeels(UIManager.LookAndFeelInfo[] infos)
                                     throws SecurityException
设置可用外观的集合。此方法不进行检查以确保所有 LookAndFeelInfos非 null,因此建议最好在 infos 数组中只提供非 null 值。

参数:
infos - 指定可用外观的 LookAndFeelInfo 对象的集合
抛出:
NullPointerException - 如果 infosnull
SecurityException
另请参见:
getInstalledLookAndFeels()

installLookAndFeel

public static void installLookAndFeel(UIManager.LookAndFeelInfo info)
将指定的外观添加到可用外观的集合中。尽管此方法允许 null info,但建议最好使用非 null 值。

参数:
info - 命名外观并标识实现它的类的 LookAndFeelInfo 对象
另请参见:
setInstalledLookAndFeels(javax.swing.UIManager.LookAndFeelInfo[])

installLookAndFeel

public static void installLookAndFeel(String name,
                                      String className)
将指定的外观添加到可用外观的集合中。此方法不以任何方式检查参数,因此建议最好提供非 null 值。

参数:
name - 该外观的描述性名称
className - 实现该外观的类的名称
另请参见:
setInstalledLookAndFeels(javax.swing.UIManager.LookAndFeelInfo[])

getLookAndFeel

public static LookAndFeel getLookAndFeel()
返回当前外观或 null

返回:
当前外观或 null
另请参见:
setLookAndFeel(javax.swing.LookAndFeel)

setLookAndFeel

public static void setLookAndFeel(LookAndFeel newLookAndFeel)
                           throws UnsupportedLookAndFeelException
将当前外观设置为 newLookAndFeel。如果当前外观为非 null,则在其上调用 uninitialize。如果 newLookAndFeel非 null,则在其上调用 initialize,接着调用 getDefaults。从 newLookAndFeel.getDefaults() 返回的默认值将替换以前外观的默认值。如果 newLookAndFeelnull,则该外观默认值被设置为 null

null 值可用于将该外观设置为 null。由于大多数 Swing 的运行都要求 LookAndFeel,所以不建议将 LookAndFeel 设置为 null

这是一个 JavaBeans 绑定属性。

参数:
newLookAndFeel - 要安装的 LookAndFeel
抛出:
UnsupportedLookAndFeelException - 如果 newLookAndFeel非 null 并且 newLookAndFeel.isSupportedLookAndFeel() 返回 false
另请参见:
getLookAndFeel()

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 的类

getSystemLookAndFeelClassName

public static String getSystemLookAndFeelClassName()
如果有实现本机系统外观的 LookAndFeel 类的名称,则返回该名称;否则返回默认的跨平台 LookAndFeel 类的名称。可通过设置 swing.systemlaf 系统属性重写此值。

返回:
LookAndFeel 类的 String
另请参见:
setLookAndFeel(javax.swing.LookAndFeel), getCrossPlatformLookAndFeelClassName()

getCrossPlatformLookAndFeelClassName

public static String getCrossPlatformLookAndFeelClassName()
返回实现默认的跨平台外观 -- Java Look and Feel (JLF) -- 的 LookAndFeel 类的名称。可通过设置 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;有关如何处理 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)
从适合给定语言环境的默认值中返回一种颜色。如果 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)
从适合给定语言环境的默认值中返回一个 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)
从适合给定语言环境的默认值中返回一个边框。如果 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)
从适合给定语言环境的默认值中返回一个字符串。如果 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 - 指定该 int 值的 Object
返回:
该 int 值
抛出:
NullPointerException - 如果 keynull

getInt

public static int getInt(Object key,
                         Locale l)
从适合给定语言环境的默认值中返回一个整数。如果 key 的值不为 Integer 或者不存在,则返回 0

参数:
key - 指定该 int 值的 Object
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 - 指定该 Insets 对象的 Object
返回:
Insets 对象
抛出:
NullPointerException - 如果 keynull

getInsets

public static Insets getInsets(Object key,
                               Locale l)
从适合给定语言环境的默认值中返回一个 Insets 对象。如果 key 的值不为 Insets,则返回 null

参数:
key - 指定该 Insets 对象的 Object
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)
从适合给定语言环境的默认值中返回一个维数。如果 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)
从适合给定语言环境的默认值中返回一个对象。

参数:
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
另请参见:
UIDefaults.put(java.lang.Object, java.lang.Object)

getUI

public static ComponentUI getUI(JComponent target)
返回 target 的适当 ComponentUI 实现。通常,此方法覆盖 getDefaults().getUI(target)。但是,如果安装了辅助外观,则此方法首先在多路外观的默认值上调用 getUI(target),如果返回值为非 null,则返回该值。

参数:
target - 要返回 ComponentUIJComponent
返回:
targetComponentUI 对象
抛出:
NullPointerException - 如果 targetnull
另请参见:
UIDefaults.getUI(javax.swing.JComponent)

getLookAndFeelDefaults

public static UIDefaults getLookAndFeelDefaults()
从当前外观返回 UIDefaultsUIDefaults 在安装该外观时获得。

通常,开发人员应该使用从 getDefaults() 返回的 UIDefaults。因为当前外观可能期望存在特定值,所以替换从此方法返回的 UIDefaults 可能发生不可预料的结果。

返回:
当前外观的 UIDefaults
另请参见:
getDefaults(), setLookAndFeel(LookAndFeel), LookAndFeel.getDefaults()

addAuxiliaryLookAndFeel

public static void addAuxiliaryLookAndFeel(LookAndFeel laf)
LookAndFeel 添加到辅助外观的列表中。这些辅助外观会告知多路外观,在创建多路 UI 时除默认的 LookAndFeel 类外还使用其他哪些 LookAndFeel 类。该项更改只有在创建新的 UI 类或在组件实例上更改默认外观时生效。

注意,这些类不同于已安装的外观。

参数:
laf - 该 LookAndFeel 对象
另请参见:
removeAuxiliaryLookAndFeel(javax.swing.LookAndFeel), setLookAndFeel(javax.swing.LookAndFeel), getAuxiliaryLookAndFeels(), getInstalledLookAndFeels()

removeAuxiliaryLookAndFeel

public static boolean removeAuxiliaryLookAndFeel(LookAndFeel laf)
从辅助外观列表移除一个 LookAndFeel。这些辅助外观会告知多路外观,在创建多路 UI 时除默认的 LookAndFeel 类外还使用其他哪些 LookAndFeel 类。该项更改只有在创建新的 UI 类或在组件实例上更改默认外观时生效。

注意,这些类不同于已安装的外观。

返回:
如果该 LookAndFeel 已从列表移除,则返回 true
另请参见:
removeAuxiliaryLookAndFeel(javax.swing.LookAndFeel), getAuxiliaryLookAndFeels(), setLookAndFeel(javax.swing.LookAndFeel), getInstalledLookAndFeels()

getAuxiliaryLookAndFeels

public static LookAndFeel[] getAuxiliaryLookAndFeels()
返回辅助外观的列表(可以为 null)。这些辅助的外观告知多路外观,在创建多路 UI 时除默认的 LookAndFeel 类外还使用其他哪些 LookAndFeel 类。

注意,这些类不同于已安装的外观。

返回:
辅助 LookAndFeel 的列表,或返回 null
另请参见:
addAuxiliaryLookAndFeel(javax.swing.LookAndFeel), removeAuxiliaryLookAndFeel(javax.swing.LookAndFeel), setLookAndFeel(javax.swing.LookAndFeel), getInstalledLookAndFeels()

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()
返回添加到此 UIManager(具有 addPropertyChangeListener())的所有 PropertyChangeListener 的数组。

返回:
添加的所有 PropertyChangeListener;如果没有添加侦听器,则返回一个空数组
从以下版本开始:
1.4

JavaTM Platform
Standard Ed. 6

提交错误或意见
有关更多的 API 参考资料和开发人员文档,请参阅 Java SE 开发人员文档。该文档包含更详细的、面向开发人员的描述,以及总体概述、术语定义、使用技巧和工作代码示例。

版权所有 2007 Sun Microsystems, Inc. 保留所有权利。 请遵守许可证条款。另请参阅文档重新分发政策