java.lang.Object
java.awt.Component
java.awt.Container
javax.swing.JComponent
javax.swing.JLayeredPane
- 所有已实现的接口:
-
ImageObserver
,MenuContainer
,Serializable
,Accessible
- 直接已知的子类:
-
JDesktopPane
@JavaBean(defaultProperty="accessibleContext") public class JLayeredPane extends JComponent implements Accessible
JLayeredPane
为JFC/Swing容器添加了深度,允许组件在需要时重叠。一个Integer
对象指定容器中每个组件的深度,数字越高的组件就会位于其他组件的上方。有关任务导向的文档和使用分层窗格的示例,请参阅如何使用分层窗格,这是The Java Tutorial中的一个部分。
示例:
JLayeredPane
将深度范围划分为几个不同的层。将组件放入其中一层可以确保组件正确重叠,而无需担心为特定深度指定数字:
- DEFAULT_LAYER
- 标准层,大多数组件都在此层。这是最底层。
- PALETTE_LAYER
- 调色板层位于默认层之上。适用于浮动工具栏和调色板,以便它们可以定位在其他组件之上。
- MODAL_LAYER
- 用于模态对话框的层。它们将显示在容器中任何工具栏、调色板或标准组件的顶部。
- POPUP_LAYER
- 弹出层显示在对话框之上。这样,与组合框、工具提示和其他帮助文本相关联的弹出窗口将显示在生成它们的组件、调色板或对话框之上。
- DRAG_LAYER
- 拖动组件时,将其重新分配到拖动层可确保它位于容器中的每个其他组件之上。拖动完成后,可以将其重新分配到其正常层。
JLayeredPane
的方法moveToFront(Component)
、moveToBack(Component)
和setPosition
可用于重新定位组件在其层内的位置。还可以使用setLayer
方法更改组件的当前层。
详细信息
JLayeredPane
像Container
一样管理其子级列表,但允许在其内部定义几个层。在同一层中的子级与普通的Container
对象完全相同,但具有一个额外的功能,即当子组件重叠时,较高层中的子组件会显示在较低层中的子组件上方。
每个层都是一个独特的整数数字。可以通过在添加调用期间传递一个Integer
对象来在Component
上设置层属性。
例如:
layeredPane.add(child, JLayeredPane.DEFAULT_LAYER); 或 layeredPane.add(child, Integer.valueOf(10));层属性也可以通过在
JLayeredPane
上调用
layeredPaneParent.setLayer(child, 10)来在组件上设置。应在将子级添加到父级之前设置层属性。
较高数字的层会显示在较低数字的层之上。因此,使用数字表示层,使用字母表示单个组件,代表性的列表顺序如下:
5a, 5b, 5c, 2a, 2b, 2c, 1a其中最左边的组件最接近显示的顶部。
可以通过调用moveToFront
或moveToBack
将组件移动到其层内的顶部或底部位置。
还可以直接指定组件在层内的位置。有效位置范围从0到该层中组件数量减1。值为-1表示最底部位置。值为0表示最顶部位置。与层号不同,较高的位置值在显示中更低。
注意: 这个顺序(由java.awt.Container定义)与层编号顺序相反。通常,您将使用以下是使用方法add(Component, layer, position)的一些示例:调用add(5x, 5, -1)的结果是:moveToFront
、moveToBack
和setLayer
。
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使用正常的绘制/事件机制会导致1a出现在底部,5a位于所有其他组件之上。
注意: 这些层只是一个逻辑构造,布局管理器将影响此容器的所有子组件,而不考虑层设置。
警告: Swing不是线程安全的。有关更多信息,请参阅Swing的线程策略。
警告: 该类的序列化对象将不兼容未来的Swing版本。当前的序列化支持适用于短期存储或在运行相同版本Swing的应用程序之间进行RMI。从1.4开始,已将所有JavaBeans的长期存储支持添加到java.beans
包中。请参阅XMLEncoder
。
- 自 JDK 版本:
- 1.2
-
Nested Class Summary
Modifier and TypeClassDescriptionprotected class
该类实现了JLayeredPane
类的辅助功能支持。Nested classes/interfaces declared in class javax.swing.JComponent
JComponent.AccessibleJComponent
Nested classes/interfaces declared in class java.awt.Container
Container.AccessibleAWTContainer
Nested classes/interfaces declared in class java.awt.Component
Component.AccessibleAWTComponent, Component.BaselineResizeBehavior, Component.BltBufferStrategy, Component.FlipBufferStrategy
-
Field Summary
Modifier and TypeFieldDescriptionstatic final Integer
定义默认层的便利对象。static final Integer
定义拖动层的便利对象。static final Integer
定义框架内容层的便利对象。static final String
绑定属性static final Integer
定义模态层的便利对象。static final Integer
定义调色板层的便利对象。static final Integer
定义弹出层的便利对象。Fields declared in class javax.swing.JComponent
listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOW
Fields declared in class java.awt.Component
accessibleContext, BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT
Fields declared in interface java.awt.image.ImageObserver
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescription获取与此JLayeredPane关联的AccessibleContext。int
getComponentCountInLayer
(int layer) 返回当前位于指定层中的子组件数。getComponentsInLayer
(int layer) 返回指定层中组件的数组。返回将组件映射到层的哈希表。int
返回指定组件的索引。int
返回指定组件的层属性。static int
获取JComponent的层属性,不会像setLayer()那样产生任何副作用。static JLayeredPane
返回包含指定组件的第一个JLayeredPane的便利方法。protected Integer
getObjectForLayer
(int layer) 返回与指定层关联的Integer对象。int
获取组件在其层内的相对位置。int
返回所有当前子级中的最高层值。protected int
insertIndexForLayer
(int layer, int position) 基本方法,根据层和位置请求确定插入新子级的正确位置。boolean
如果面板中的组件可以重叠,则返回false,这会使优化绘图变得不可能。int
返回所有当前子级中的最低层值。void
将组件移动到其当前层中组件的底部(位置-1)。void
将组件移动到其当前层中组件的顶部(位置0)。void
在指定的图形上下文中绘制此JLayeredPane。protected String
返回此JLayeredPane的字符串表示形式。static void
putLayer
(JComponent c, int layer) 设置JComponent的层属性。void
remove
(int index) 从此窗格中删除索引组件。void
从此容器中删除所有组件。void
设置指定组件的层属性,使其成为该层中最底部的组件。void
为指定组件设置层属性,并设置其在该层中的位置。void
setPosition
(Component c, int position) 将组件移动到其当前层中的position
位置,其中0是该层中的最顶部位置,-1是该层中的最底部位置。Methods declared in class javax.swing.JComponent
addAncestorListener, addNotify, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, fireVetoableChange, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAncestorListeners, getAutoscrolls, getBaseline, getBaselineResizeBehavior, 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, getUI, getUIClassID, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, hide, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isPaintingForPrint, isPaintingOrigin, 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
Methods declared in class java.awt.Container
add, add, add, add, add, addContainerListener, addImpl, 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, transferFocusDownCycle, validate, validateTree
Methods declared in class 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, 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, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, hasFocus, 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, requestFocus, requestFocus, requestFocusInWindow, resize, resize, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setMixingCutoutShape, setName, setSize, setSize, show, show, size, toString, transferFocus, transferFocusBackward, transferFocusUpCycle
-
Field Details
-
DEFAULT_LAYER
定义默认层的便利对象。等同于Integer.valueOf(0)。 -
PALETTE_LAYER
定义调色板层的便利对象。等同于Integer.valueOf(100)。 -
MODAL_LAYER
定义模态层的便利对象。等同于Integer.valueOf(200)。 -
POPUP_LAYER
定义弹出层的便利对象。等同于Integer.valueOf(300)。 -
DRAG_LAYER
定义拖动层的便利对象。等同于Integer.valueOf(400)。 -
FRAME_CONTENT_LAYER
定义框架内容层的便利对象。通常仅用于定位JFrame的contentPane和menuBar组件。等同于Integer.valueOf(-30000)。- 参见:
-
LAYER_PROPERTY
绑定属性- 参见:
-
-
Constructor Details
-
JLayeredPane
public JLayeredPane()创建一个新的JLayeredPane
-
-
Method Details
-
remove
public void remove(int index) 从此窗格中删除索引组件。这是绝对索引,忽略层。 -
removeAll
public void removeAll()从此容器中删除所有组件。 -
isOptimizedDrawingEnabled
如果面板中的组件可以重叠,使得优化绘制变得不可能,则返回false。否则返回true。- 覆盖:
-
isOptimizedDrawingEnabled
在类JComponent
- 返回:
- 如果组件可以重叠则返回false,否则返回true
- 参见:
-
putLayer
设置JComponent上的层属性。此方法不会引起任何副作用,如setLayer()(绘制、添加/移除等)。通常应该使用实例方法setLayer(),以获得所需的副作用(如重绘)。- 参数:
-
c
- 要移动的JComponent -
layer
- 指定要移动到的层的整数 - 参见:
-
getLayer
获取JComponent的层属性,不会引起任何副作用,如setLayer()(绘制、添加/移除等)。通常应该使用实例方法getLayer()。- 参数:
-
c
- 要检查的JComponent - 返回:
- 指定组件的层的整数
-
getLayeredPaneAbove
返回包含指定组件的第一个JLayeredPane的便捷方法。请注意,所有JFrames都有一个JLayeredPane作为其根,因此JFrame中的任何组件都将具有JLayeredPane父级。- 参数:
-
c
- 要检查的组件 - 返回:
- 包含该组件的JLayeredPane,如果在组件层次结构中找不到JLayeredPane,则返回null
- 参见:
-
setLayer
设置指定组件的层属性,使其成为该层中最底部的组件。应在添加到父级之前调用。- 参数:
-
c
- 要设置层的组件 -
layer
- 指定要设置的层的整数,较低的数字靠近底部
-
setLayer
设置指定组件的层属性,并设置其在该层中的位置。- 参数:
-
c
- 要设置层的组件 -
layer
- 指定要设置的层的整数,较低的数字靠近底部 -
position
- 指定在层内的位置的整数,其中0是最顶部位置,-1是最底部位置
-
getLayer
返回指定组件的层属性。- 参数:
-
c
- 要检查的组件 - 返回:
- 指定组件当前层的整数
-
getIndexOf
返回指定组件的索引。这是绝对索引,忽略层。索引号,如位置号,顶部组件的索引为零。较大的数字靠近底部。- 参数:
-
c
- 要检查的组件 - 返回:
- 指定组件的索引的整数
-
moveToFront
将组件移动到其当前层中的顶部(位置0)。- 参数:
-
c
- 要移动的组件 - 参见:
-
moveToBack
将组件移动到其当前层中的底部(位置-1)。- 参数:
-
c
- 要移动的组件 - 参见:
-
setPosition
将组件移动到其当前层中的position
位置,其中0是层内最顶部的位置,-1是层内最底部的位置。注意: 位置编号由java.awt.Container定义,并且与层编号相反。较低的位置编号靠近顶部(0是最顶部),较高的位置编号靠近底部。
- 参数:
-
c
- 要移动的组件 -
position
- 在-1..N-1范围内的整数,其中N是组件当前层中的组件数
-
getPosition
获取组件在其层内的相对位置。- 参数:
-
c
- 要检查的组件 - 返回:
- 一个整数,表示组件的位置,其中0是最顶部位置,最高索引值=该层中组件的计数减1
- 参见:
-
highestLayer
public int highestLayer()返回所有当前子级中的最高层值。如果没有子级,则返回0。- 返回:
- 一个整数,指示面板中顶部组件的层,如果没有子级则返回0
-
lowestLayer
public int lowestLayer()返回所有当前子级中的最低层值。如果没有子级,则返回0。- 返回:
- 一个整数,指示面板中底部组件的层,如果没有子级则返回0
-
getComponentCountInLayer
public int getComponentCountInLayer(int layer) 返回当前在指定层中的子级数。- 参数:
-
layer
- 指定要检查的层 - 返回:
- 一个整数,指定该层中的组件数
-
getComponentsInLayer
返回指定层中组件的数组。- 参数:
-
layer
- 指定要检查的层 - 返回:
- 包含该层中的组件的数组
-
paint
在指定的图形上下文中绘制此JLayeredPane。- 覆盖:
-
paint
在类JComponent
- 参数:
-
g
- 用于绘制的图形上下文 - 参见:
-
getComponentToLayer
返回将组件映射到层的哈希表。- 返回:
- 用于将组件映射到其层的哈希表
-
getObjectForLayer
返回与指定层关联的Integer对象。- 参数:
-
layer
- 指定的层 - 返回:
- 该层的Integer对象
-
insertIndexForLayer
protected int insertIndexForLayer(int layer, int position) 基本方法,根据层和位置请求确定插入新子级的适当位置。- 参数:
-
layer
- 指定的层 -
position
- 指定层内位置的整数 - 返回:
- 一个整数,给出(绝对)插入索引
- 参见:
-
paramString
返回此JLayeredPane的字符串表示形式。此方法仅用于调试目的,返回的字符串的内容和格式可能因实现而异。返回的字符串可能为空,但不能为null
。- 覆盖:
-
paramString
在类JComponent
- 返回:
- 此JLayeredPane的字符串表示形式。
-
getAccessibleContext
获取与此JLayeredPane关联的AccessibleContext。对于分层窗格,AccessibleContext采用AccessibleJLayeredPane的形式。如果需要,将创建一个新的AccessibleJLayeredPane实例。- 指定者:
-
getAccessibleContext
在接口Accessible
- 覆盖:
-
getAccessibleContext
在类Component
- 返回:
- 作为此JLayeredPane的AccessibleContext的AccessibleJLayeredPane
-