JavaTM 2 Platform
Standard Ed. 5.0

javax.swing
类 JLayeredPane

java.lang.Object
  继承者 java.awt.Component
      继承者 java.awt.Container
          继承者 javax.swing.JComponent
              继承者 javax.swing.JLayeredPane
所有已实现的接口:
ImageObserver, MenuContainer, Serializable, Accessible
直接已知子类:
JDesktopPane

public class JLayeredPane
extends JComponent
implements Accessible

JLayeredPane 为 JFC/Swing 容器添加了深度,允许组件在需要时互相重叠。Integer 对象指定容器中每个组件的深度,其中编号较高的组件位于其他组件之上。有关面向任务的文档和使用分层窗格的示例,请参阅《The Java Tutorial》中的 How to Use a Layered Pane 一节。

以下文本是对此图像的描述。

为方便起见,JLayeredPane 将该深度范围分成几个不同的层。将组件放入相应的层,这样更容易确保组件正确地重叠,而不必担心为具体的深度指定编号:
DEFAULT_LAYER
大多数组件位于的标准层。这是最底层。
PALETTE_LAYER
调色板层位于默认层之上。它们对于浮动工具栏和调色板很有用,因此可以位于其他组件之上。
MODAL_LAYER
该层用于模式对话框。它们将出现在容器中所有工具栏、调色板或标准组件的上面。
POPUP_LAYER
弹出层显示在对话框的上面。这样,与组合框、工具提示和其他帮助文本关联的弹出式窗口将出现在组件、调色板或生成它们的对话框之上。
DRAG_LAYER
拖动一个组件时,将该组件重分配到拖动层可确保将其定位在容器中的其他所有组件之上。完成拖动后,可将该组件重分配到其正常层。
可以使用 JLayeredPane 的方法 moveToFront(Component)moveToBack(Component)setPosition 在组件所在层中对其进行重定位。还可以使用 setLayer 方法更改该组件的当前层。

详细信息

JLayeredPane 以类似 Container 的方式管理其子级列表,但允许在其内部定义多个层。对同一层中子级的管理就像普通的 Container 对象一样,但添加的功能是,当子组件重叠时,高层中的子组件显示在低层中的子组件之上。

每一层都是一个不同的整数。可以在调用 add 的过程中通过传递 Integer 对象,从而在 Component 上设置 layer 属性。
例如:

     layeredPane.add(child, JLayeredPane.DEFAULT_LAYER);
或者
layeredPane.add(child, new Integer(10));
 
还可以通过在 JLayeredPane 上进行如下调用在 Component 上设置 layer 属性:
     layeredPaneParent.setLayer(child, 10)
JLayeredPane 是该 Component 的父组件。应该将子组件添加到父组件之前 设置 layer 属性。

编号较高的层显示在编号较低的层之上。因此,对于每个组件,使用其层编号和字母即可,有代表性的列表顺序如下所示:

       5a, 5b, 5c, 2a, 2b, 2c, 1a 
其中最左边的组件最接近显示区的顶部。

可以通过调用 moveToFrontmoveToBack 将组件移入到其所在层的顶部或底部位置。

还可以直接指定某层中组件的位置。有效的位置范围是从 0 到该层中组件数减一所得的值。值 -1 指示最底层位置。值 0 指示最顶层位置。与层的编号不同,较高的位置值显示在较低 处。

注: 此序列(通过 java.awt.Container 定义)与层的编号序列相反。可是通常使用的是 moveToFrontmoveToBacksetLayer 方法。
以下是使用方法 add(Component, layer, position) 的一些示例:调用 add(5x, 5, -1) 得到:
       5a, 5b, 5c, 5x, 2a, 2b, 2c, 1a 
调用 add(5z, 5, 2) 得到:
       5a, 5b, 5z, 5c, 5x, 2a, 2b, 2c, 1a 
调用 add(3a, 3, 7) 得到:
       5a, 5b, 5z, 5c, 5x, 3a, 2a, 2b, 2c, 1a 
使用正常的 paint/event 机制会使 1a 出现在底部,5a 出现在所有其他组件之上。

注: 这些层只是一个逻辑构造,LayoutManager 将影响此容器的所有子组件,而不管其层设置如何。

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


嵌套类摘要
protected  class JLayeredPane.AccessibleJLayeredPane
          此类实现对 JLayeredPane 类的可访问性支持。
 
从类 javax.swing.JComponent 继承的嵌套类/接口
JComponent.AccessibleJComponent
 
从类 java.awt.Container 继承的嵌套类/接口
Container.AccessibleAWTContainer
 
从类 java.awt.Component 继承的嵌套类/接口
Component.AccessibleAWTComponent, Component.BltBufferStrategy, Component.FlipBufferStrategy
 
字段摘要
static Integer DEFAULT_LAYER
          定义 Default 层的便捷对象。
static Integer DRAG_LAYER
          定义 Drag 层的便捷对象。
static Integer FRAME_CONTENT_LAYER
          定义 Frame Content 层的便捷对象。
static String LAYER_PROPERTY
          Bound 属性
static Integer MODAL_LAYER
          定义 Modal 层的便捷对象。
static Integer PALETTE_LAYER
          定义 Palette 层的便捷对象。
static Integer POPUP_LAYER
          定义 Popup 层的便捷对象。
 
从类 javax.swing.JComponent 继承的字段
accessibleContext, listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOW
 
从类 java.awt.Component 继承的字段
BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT
 
从接口 java.awt.image.ImageObserver 继承的字段
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH
 
构造方法摘要
JLayeredPane()
          创建新的 JLayeredPane
 
方法摘要
protected  void addImpl(Component comp, Object constraints, int index)
          将指定组件添加到此容器的指定索引所在的位置上。
 AccessibleContext getAccessibleContext()
          获得与此 JLayeredPane 关联的 AccessibleContext。
 int getComponentCountInLayer(int layer)
          返回指定层中当前的子组件数。
 Component[] getComponentsInLayer(int layer)
          返回指定层中组件的数组。
protected  Hashtable<Component,Integer> getComponentToLayer()
          返回将组件映射到层的哈希表。
 int getIndexOf(Component c)
          返回指定 Component 的索引。
 int getLayer(Component c)
          返回指定 Component 的 layer 属性。
static int getLayer(JComponent c)
          获得 JComponent 的 layer 属性,此方法不会产生与 setLayer() 类似的副作用(绘制、添加/移除等)。
static JLayeredPane getLayeredPaneAbove(Component c)
          一个便捷方法,它返回包含指定组件的第一个 JLayeredPane。
protected  Integer getObjectForLayer(int layer)
          返回与指定层关联的 Integer 对象。
 int getPosition(Component c)
          获得该组件在其所在层中的相对位置。
 int highestLayer()
          返回所有当前子组件的最高层值。
protected  int insertIndexForLayer(int layer, int position)
          一个根据层和位置要求确定插入新子组件的正确位置的基本方法。
 boolean isOptimizedDrawingEnabled()
          如果窗格中的组件可以重叠,则返回 false(因为这会导致最优绘制无法进行)。
 int lowestLayer()
          返回所有当前子组件的最低层值。
 void moveToBack(Component c)
          将该组件移到当前层中所有组件的底层(位置 -1)。
 void moveToFront(Component c)
          将该组件移到当前层中所有组件的顶层(位置 0)。
 void paint(Graphics g)
          在指定的图形上下文中绘制此 JLayeredPane。
protected  String paramString()
          返回此 JLayeredPane 的字符串表示形式。
static void putLayer(JComponent c, int layer)
          设置 JComponent 上的 layer 属性。
 void remove(int index)
          从此窗格中移除已索引的组件。
 void removeAll()
          从此容器中移除所有组件。
 void setLayer(Component c, int layer)
          设置指定组件的 layer 属性,使之成为该层中最底部的组件。
 void setLayer(Component c, int layer, int position)
          为指定组件设置 layer 属性,并设置它在该层中的位置。
 void setPosition(Component c, int position)
          将该组件移到当前层中的 position 处,其中 0 表示该层中的最顶层位置,-1 表示最底层位置。
 
从类 javax.swing.JComponent 继承的方法
addAncestorListener, addNotify, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, firePropertyChange, fireVetoableChange, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAncestorListeners, getAutoscrolls, getBorder, getBounds, getClientProperty, getComponentGraphics, getComponentPopupMenu, getConditionForKeyStroke, getDebugGraphicsOptions, getDefaultLocale, getFontMetrics, getGraphics, getHeight, getInheritsPopupMenu, getInputMap, getInputMap, getInputVerifier, getInsets, getInsets, getListeners, getLocation, getMaximumSize, getMinimumSize, getNextFocusableComponent, getPopupLocation, getPreferredSize, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getToolTipText, getTopLevelAncestor, getTransferHandler, getUIClassID, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paintBorder, paintChildren, paintComponent, paintImmediately, paintImmediately, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processKeyBinding, processKeyEvent, processMouseEvent, processMouseMotionEvent, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeNotify, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resetKeyboardActions, reshape, revalidate, scrollRectToVisible, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, setBackground, setBorder, setComponentPopupMenu, setDebugGraphicsOptions, setDefaultLocale, setDoubleBuffered, setEnabled, setFocusTraversalKeys, setFont, setForeground, setInheritsPopupMenu, setInputMap, setInputVerifier, setMaximumSize, setMinimumSize, setNextFocusableComponent, setOpaque, setPreferredSize, setRequestFocusEnabled, setToolTipText, setTransferHandler, setUI, setVerifyInputWhenFocusTarget, setVisible, unregisterKeyboardAction, update, updateUI
 
从类 java.awt.Container 继承的方法
add, add, add, add, add, addContainerListener, addPropertyChangeListener, addPropertyChangeListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getComponentZOrder, getContainerListeners, getFocusTraversalKeys, getFocusTraversalPolicy, getLayout, getMousePosition, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusCycleRoot, isFocusTraversalPolicyProvider, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, preferredSize, printComponents, processContainerEvent, processEvent, remove, removeContainerListener, setComponentZOrder, setFocusCycleRoot, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setLayout, transferFocusBackward, transferFocusDownCycle, validate, validateTree
 
从类 java.awt.Component 继承的方法
action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, bounds, checkImage, checkImage, coalesceEvents, contains, createImage, createImage, createVolatileImage, createVolatileImage, disableEvents, dispatchEvent, enable, enableEvents, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getBackground, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusCycleRootAncestor, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getForeground, getGraphicsConfiguration, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputContext, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocale, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMousePosition, getMouseWheelListeners, getName, getParent, getPeer, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, hasFocus, hide, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isMaximumSizeSet, isMinimumSizeSet, isPreferredSizeSet, isShowing, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, postEvent, prepareImage, prepareImage, processComponentEvent, processFocusEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processMouseWheelEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, resize, resize, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setName, setSize, setSize, show, show, size, toString, transferFocus, transferFocusUpCycle
 
从类 java.lang.Object 继承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

字段详细信息

DEFAULT_LAYER

public static final Integer DEFAULT_LAYER
定义 Default 层的便捷对象。等同于新的 Integer(0)。


PALETTE_LAYER

public static final Integer PALETTE_LAYER
定义 Palette 层的便捷对象。等同于新的 Integer(100)。


MODAL_LAYER

public static final Integer MODAL_LAYER
定义 Modal 层的便捷对象。等同于新的 Integer(200)。


POPUP_LAYER

public static final Integer POPUP_LAYER
定义 Popup 层的便捷对象。等同于新的 Integer(300)。


DRAG_LAYER

public static final Integer DRAG_LAYER
定义 Drag 层的便捷对象。等同于新的 Integer(400)。


FRAME_CONTENT_LAYER

public static final Integer FRAME_CONTENT_LAYER
定义 Frame Content 层的便捷对象。此层通常只用于定位 JFrame 的 contentPane 和 menuBar 组件。等同于新的 Integer(-30000)。

另请参见:
JFrame

LAYER_PROPERTY

public static final String LAYER_PROPERTY
Bound 属性

另请参见:
常量字段值
构造方法详细信息

JLayeredPane

public JLayeredPane()
创建新的 JLayeredPane

方法详细信息

addImpl

protected void addImpl(Component comp,
                       Object constraints,
                       int index)
从类 Container 复制的描述
将指定组件添加到此容器的指定索引所在的位置上。此方法还通知布局管理器,通过 addLayoutComponent 方法,使用指定的约束对象将组件添加到此容器的布局中。

这些约束是由正使用的特定布局管理器定义的。例如,BorderLayout 类定义了五个约束:BorderLayout.NORTHBorderLayout.SOUTHBorderLayout.EASTBorderLayout.WESTBorderLayout.CENTER

GridBagLayout 类需要一个 GridBagConstraints 对象。如果传递正确的约束对象类型时失败,则会导致 IllegalArgumentException

如果布局管理器既实现了 LayoutManager 接口又实现了 LayoutManager2 接口,则调用 LayoutManager2 方法。

注意,如果组件已经存在于此容器或其子容器中,那么在将组件添加到此容器之前,要从该容器中移除它。

在其他所有添加方法引用此方法时,如果某个程序需要追踪每个添加到容器的请求,那么这就是要重写的方法。被重写的方法通常应该包括一个对该方法的父类版本的调用:

super.addImpl(comp, constraints, index)

覆盖:
Container 中的 addImpl
参数:
comp - 要添加的组件
constraints - 表示此组件的布局限制的对象
另请参见:
Container.add(Component), Container.add(Component, int), Container.add(Component, java.lang.Object), LayoutManager, LayoutManager2

remove

public void remove(int index)
从此窗格中移除已索引的组件。这是绝对索引,与层无关。

覆盖:
Container 中的 remove
参数:
index - 指定要移除组件的 int 值
另请参见:
getIndexOf(java.awt.Component)

removeAll

public void removeAll()
从此容器中移除所有组件。

覆盖:
Container 中的 removeAll
从以下版本开始:
1.5
另请参见:
Container.add(java.awt.Component), Container.remove(int)

isOptimizedDrawingEnabled

public boolean isOptimizedDrawingEnabled()
如果窗格中的组件可以重叠,则返回 false(因为这会导致最优绘制无法进行)。否则返回 true。

覆盖:
JComponent 中的 isOptimizedDrawingEnabled
返回:
如果组件可以重叠,则返回 false;否则返回 true
另请参见:
JComponent.isOptimizedDrawingEnabled()

putLayer

public static void putLayer(JComponent c,
                            int layer)
设置 JComponent 上的 layer 属性。此方法不会产生与 setLayer() 类似的副作用(绘制、添加/移除等)。通常,为了获得所需的副作用(如重绘),应该使用实例方法 setLayer()。

参数:
c - 要移动的 JComponent
layer - 一个 int 值,指定要移入的层
另请参见:
setLayer(java.awt.Component, int)

getLayer

public static int getLayer(JComponent c)
获得 JComponent 的 layer 属性,此方法不会产生与 setLayer() 类似的副作用(绘制、添加/移除等)。要获得绘制、添加/移除等功能,通常应该使用实例方法 getLayer()。

参数:
c - 要检查的 JComponent
返回:
指定组件层的 int 值

getLayeredPaneAbove

public static JLayeredPane getLayeredPaneAbove(Component c)
一个便捷方法,它返回包含指定组件的第一个 JLayeredPane。注意,所有 JFrame 在其根部都有一个 JLayeredPane,因此 JFrame 中的任何组件都具有 JLayeredPane 父级。

参数:
c - 要检查的 Component
返回:
包含该组件的 JLayeredPane,如果在组件层次结构中未找到 JLayeredPane,则返回 null
另请参见:
JFrame, JRootPane

setLayer

public void setLayer(Component c,
                     int layer)
设置指定组件的 layer 属性,使之成为该层中最底部的组件。应该在将组件添加到其父组件之前调用该方法。

参数:
c - 要为其设置层的 Component
layer - 一个 int 值,指定要设置的层,其中较低编号更接近底部

setLayer

public void setLayer(Component c,
                     int layer,
                     int position)
为指定组件设置 layer 属性,并设置它在该层中的位置。

参数:
c - 要为其设置层的 Component
layer - 一个 int 值,指定要设置的层,其中较低编号更接近底部
position - 指定层中位置的 int 值,其中 0 表示最顶层位置,-1 表示最底层位置

getLayer

public int getLayer(Component c)
返回指定 Component 的 layer 属性。

参数:
c - 要检查的 Component
返回:
指定组件当前层的 int 值

getIndexOf

public int getIndexOf(Component c)
返回指定 Component 的索引。这是绝对索引,与层无关。索引编号与位置编号一样,索引零表示最顶层组件。较大编号更接近底部。

参数:
c - 要检查的 Component
返回:
指定组件索引的 int 值

moveToFront

public void moveToFront(Component c)
将该组件移到当前层中所有组件的顶层(位置 0)。

参数:
c - 要移动的 Component
另请参见:
setPosition(Component, int)

moveToBack

public void moveToBack(Component c)
将该组件移到当前层中所有组件的底层(位置 -1)。

参数:
c - 要移动的 Component
另请参见:
setPosition(Component, int)

setPosition

public void setPosition(Component c,
                        int position)
将该组件移到当前层中的 position 处,其中 0 表示该层中的最顶层位置,-1 表示最底层位置。

注:位置编号由 java.awt.Container 定义,且与层的编号相反。较低的位置编号更接近顶层(0 为最顶层),较高的位置编号更接近底层。

参数:
c - 要移动的 Component
position - 范围在 -1 到 N-1 之间的 int 值,其中 N 是该组件当前层中的组件数

getPosition

public int getPosition(Component c)
获得该组件在其所在层中的相对位置。

参数:
c - 要检查的 Component
返回:
给出组件位置的一个 int 值,其中 0 表示最顶层位置,且最高索引值等于该层中的组件数减一
另请参见:
getComponentCountInLayer(int)

highestLayer

public int highestLayer()
返回所有当前子组件的最高层值。如果没有子组件,则返回 0。

返回:
一个 int 值,指示窗格中最顶层组件的层,如果没有子组件,则返回 0

lowestLayer

public int lowestLayer()
返回所有当前子组件的最低层值。如果没有子组件,则返回 0。

返回:
一个 int 值,指示窗格中最底层组件的层;如果没有子组件,则返回 0

getComponentCountInLayer

public int getComponentCountInLayer(int layer)
返回指定层中当前的子组件数。

参数:
layer - 一个 int 值,指定要检查的层
返回:
一个 int 值,指定该层中的组件数

getComponentsInLayer

public Component[] getComponentsInLayer(int layer)
返回指定层中组件的数组。

参数:
layer - 一个 int 值,指定要检查的层
返回:
该层中包含的 Component 数组

paint

public void paint(Graphics g)
在指定的图形上下文中绘制此 JLayeredPane。

覆盖:
JComponent 中的 paint
参数:
g - 要在其中进行绘制的 Graphics 上下文
另请参见:
JComponent.paintComponent(java.awt.Graphics), JComponent.paintBorder(java.awt.Graphics), JComponent.paintChildren(java.awt.Graphics), JComponent.getComponentGraphics(java.awt.Graphics), JComponent.repaint(long, int, int, int, int)

getComponentToLayer

protected Hashtable<Component,Integer> getComponentToLayer()
返回将组件映射到层的哈希表。

返回:
用于将组件映射到对应层的 Hashtable

getObjectForLayer

protected Integer getObjectForLayer(int layer)
返回与指定层关联的 Integer 对象。

参数:
layer - 指定该层的 int 值
返回:
该层的 Integer 对象

insertIndexForLayer

protected int insertIndexForLayer(int layer,
                                  int position)
一个根据层和位置要求确定插入新子组件的正确位置的基本方法。

参数:
layer - 指定该层的 int 值
position - 指定层中位置的 int 值
返回:
给出(绝对的)插入索引的 int 值
另请参见:
getIndexOf(java.awt.Component)

paramString

protected String paramString()
返回此 JLayeredPane 的字符串表示形式。此方法仅在进行调试的时候使用,对于各个实现,所返回字符串的内容和格式可能有所不同。返回的字符串可能为空,但不可能为 null

覆盖:
JComponent 中的 paramString
返回:
此 JLayeredPane 的字符串表示形式。

getAccessibleContext

public AccessibleContext getAccessibleContext()
获得与此 JLayeredPane 关联的 AccessibleContext。对于分层窗格,AccessibleContext 采用 AccessibleJLayeredPane 的形式。如有必要,将创建一个新的 AccessibleJLayeredPane 实例。

指定者:
接口 Accessible 中的 getAccessibleContext
覆盖:
JComponent 中的 getAccessibleContext
返回:
一个 AccessibleJLayeredPane,它充当此 JLayeredPane 的 AccessibleContext

JavaTM 2 Platform
Standard Ed. 5.0

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

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