所有类


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  classJLayeredPane.AccessibleJLayeredPane
          此类实现对 JLayeredPane 类的可访问性支持。
 
从类 javax.swing.JComponent 继承的嵌套类/接口
JComponent.AccessibleJComponent
 
从类 java.awt.Container 继承的嵌套类/接口
Container.AccessibleAWTContainer
 
从类 java.awt.Component 继承的嵌套类/接口
Component.AccessibleAWTComponent, Component.BltBufferStrategy, Component.FlipBufferStrategy
 
字段摘要
static IntegerDEFAULT_LAYER
          定义 Default 层的便捷对象。
static IntegerDRAG_LAYER
          定义 Drag 层的便捷对象。
static IntegerFRAME_CONTENT_LAYER
          定义 Frame Content 层的便捷对象。
static StringLAYER_PROPERTY
          Bound 属性
static IntegerMODAL_LAYER
          定义 Modal 层的便捷对象。
static IntegerPALETTE_LAYER
          定义 Palette 层的便捷对象。
static IntegerPOPUP_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  voidaddImpl(Component comp, Object constraints, int index)
          将指定组件添加到此容器的指定索引所在的位置上。
 AccessibleContextgetAccessibleContext()
          获得与此 JLayeredPane 关联的 AccessibleContext。
 intgetComponentCountInLayer(int layer)
          返回指定层中当前的子组件数。
 Component[]getComponentsInLayer(int layer)
          返回指定层中组件的数组。
protected  Hashtable<Component,Integer>getComponentToLayer()
          返回将组件映射到层的哈希表。
 intgetIndexOf(Component c)
          返回指定 Component 的索引。
 intgetLayer(Component c)
          返回指定 Component 的 layer 属性。
static intgetLayer(JComponent c)
          获得 JComponent 的 layer 属性,此方法不会产生与 setLayer() 类似的副作用(绘制、添加/移除等)。
static JLayeredPanegetLayeredPaneAbove(Component c)
          一个便捷方法,它返回包含指定组件的第一个 JLayeredPane。
protected  IntegergetObjectForLayer(int layer)
          返回与指定层关联的 Integer 对象。
 intgetPosition(Component c)
          获得该组件在其所在层中的相对位置。
 inthighestLayer()
          返回所有当前子组件的最高层值。
protected  intinsertIndexForLayer(int layer, int position)
          一个根据层和位置要求确定插入新子组件的正确位置的基本方法。
 booleanisOptimizedDrawingEnabled()
          如果窗格中的组件可以重叠,则返回 false(因为这会导致最优绘制无法进行)。
 intlowestLayer()
          返回所有当前子组件的最低层值。
 voidmoveToBack(Component c)
          将该组件移到当前层中所有组件的底层(位置 -1)。
 voidmoveToFront(Component c)
          将该组件移到当前层中所有组件的顶层(位置 0)。
 voidpaint(Graphics g)
          在指定的图形上下文中绘制此 JLayeredPane。
protected  StringparamString()
          返回此 JLayeredPane 的字符串表示形式。
static voidputLayer(JComponent c, int layer)
          设置 JComponent 上的 layer 属性。
 voidremove(int index)
          从此窗格中移除已索引的组件。
 voidremoveAll()
          从此容器中移除所有组件。
 voidsetLayer(Component c, int layer)
          设置指定组件的 layer 属性,使之成为该层中最底部的组件。
 voidsetLayer(Component c, int layer, int position)
          为指定组件设置 layer 属性,并设置它在该层中的位置。
 voidsetPosition(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