- java.lang.Object
-
- java.awt.Component
-
- java.awt.Container
-
- javax.swing.JComponent
-
- javax.swing.JLayeredPane
-
- All Implemented Interfaces:
-
ImageObserver
,MenuContainer
,Serializable
,Accessible
- 已知直接子类:
-
JDesktopPane
@JavaBean(defaultProperty="accessibleContext") public class JLayeredPane extends JComponent implements Accessible
JLayeredPane
增加了JFC / Swing容器的深度,允许组件在需要时重叠。 一个Integer
对象指定了容器中的每个组件的深度,其中较高编号的组件位于其他组件的“顶部”上。 对于面向任务的文档和使用分层窗格的示例,请参阅“Java教程”中的“ How to Use a Layered Pane”部分。 ExampleJLayeredPane
将深度范围划分为几个不同的层。 将组件放入其中一个层可以轻松确保组件正确重叠,而无需担心指定特定深度的数字:- 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); or layeredPane.add(child, Integer.valueOf.valueOf(10));
也可以通过调用在Component上设置layer属性layeredPaneParent.setLayer(child, 10)
在JLayeredPane
这是组件的父级。 在将子添加到父项之前,应该设置该层。较高数字层显示在较低数字层之上。 因此,使用单个组件的层和字母的数字,代表性的列表顺序将如下所示:
5a, 5b, 5c, 2a, 2b, 2c, 1a
其中最左边的组件最靠近显示器的顶部。组件可以通过调用
moveToFront
或moveToBack
移动到其图层中的顶部或底部位置。层内的组件位置也可以直接指定。 有效位置的范围为0到1,小于该层中的组件数。 值-1表示最底部的位置。 值为0表示最高位置。 与层数不同,显示屏中较高的位置值较低 。
Note: This sequence (defined by java.awt.Container) is the reverse of the layer numbering sequence. Usually though, you will use
以下是使用方法add(Component,layer,position)的一些示例:调用add(5x,5,-1)结果:moveToFront
,moveToBack
, andsetLayer
.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是高于所有其他组件。注意:这些图层只是一个逻辑结构,LayoutManagers会影响此容器的所有子组件,而不考虑图层设置。
警告: Swing不是线程安全的。 有关详细信息,请参阅Swing's Threading Policy 。
警告:此类的序列化对象与将来的Swing版本不兼容。 当前的序列化支持适用于运行相同版本的Swing的应用程序之间的短期存储或RMI。 从1.4开始,对所有JavaBeans的长期存储的支持已被添加到
java.beans
包中。 请参阅XMLEncoder
。- 从以下版本开始:
- 1.2
- 另请参见:
- Serialized Form
-
-
Nested Class Summary
Nested Classes Modifier and Type Class 描述 protected class
JLayeredPane.AccessibleJLayeredPane
这个类实现JLayeredPane
类的可访问性支持。-
Nested classes/interfaces inherited from class java.awt.Component
Component.AccessibleAWTComponent, Component.BaselineResizeBehavior, Component.BltBufferStrategy, Component.FlipBufferStrategy
-
Nested classes/interfaces inherited from class java.awt.Container
Container.AccessibleAWTContainer
-
Nested classes/interfaces inherited from class javax.swing.JComponent
JComponent.AccessibleJComponent
-
-
Field Summary
Fields Modifier and Type Field 描述 static Integer
DEFAULT_LAYER
定义默认图层的便利对象。static Integer
DRAG_LAYER
定义拖动图层的便利对象。static Integer
FRAME_CONTENT_LAYER
定义框架内容层的便利对象。static String
LAYER_PROPERTY
绑定财产static Integer
MODAL_LAYER
定义模态层的便利对象。static Integer
PALETTE_LAYER
定义调色板层的方便对象。static Integer
POPUP_LAYER
定义Popup图层的便利对象。-
Fields inherited from class java.awt.Component
accessibleContext, BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT
-
Fields inherited from interface java.awt.image.ImageObserver
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH
-
Fields inherited from class javax.swing.JComponent
listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOW
-
-
构造方法摘要
构造方法 Constructor 描述 JLayeredPane()
创建一个新的JLayeredPane
-
方法摘要
所有方法 静态方法 接口方法 具体的方法 Modifier and Type 方法 描述 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)
返回与指定图层相关联的整数对象。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)
设置指定组件上的图层属性,使其成为该图层中最底层的组件。void
setLayer(Component c, int layer, int position)
设置指定组件的层属性,并设置其在该层中的位置。void
setPosition(Component c, int position)
将组件移动到其当前层中的position
,其中0是层内的最高位置,-1是最底层的位置。-
Methods inherited from 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, 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
-
Methods inherited from class 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, transferFocusDownCycle, validate, validateTree
-
Methods inherited from class javax.swing.JComponent
addAncestorListener, addNotify, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, 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
-
-
-
-
字段详细信息
-
DEFAULT_LAYER
public static final Integer DEFAULT_LAYER
定义默认图层的便利对象。 相当于Integer.valueOf(0)。
-
PALETTE_LAYER
public static final Integer PALETTE_LAYER
定义调色板层的方便对象。 相当于Integer.valueOf(100)。
-
MODAL_LAYER
public static final Integer MODAL_LAYER
定义模态层的便利对象。 相当于Integer.valueOf(200)。
-
POPUP_LAYER
public static final Integer POPUP_LAYER
定义Popup图层的便利对象。 相当于Integer.valueOf(300)。
-
DRAG_LAYER
public static final Integer DRAG_LAYER
定义拖动图层的便利对象。 相当于Integer.valueOf(400)。
-
FRAME_CONTENT_LAYER
public static final Integer FRAME_CONTENT_LAYER
定义框架内容层的便利对象。 此图层通常仅用于定位JFrame的contentPane和menuBar组件。 相当于Integer.valueOf(-30000)。- 另请参见:
-
JFrame
-
LAYER_PROPERTY
public static final String LAYER_PROPERTY
绑定财产- 另请参见:
- Constant Field Values
-
-
方法详细信息
-
addImpl
protected void addImpl(Component comp, Object constraints, int index)
描述从类复制:Container
在指定的索引处将指定的组件添加到此容器。 此方法还通过布局管理器通过addLayoutComponent
方法使用指定的约束对象将组件添加到此容器的布局。约束由正在使用的特定布局管理器定义。 例如,
BorderLayout
类定义了五个约束:BorderLayout.NORTH
,BorderLayout.SOUTH
,BorderLayout.EAST
,BorderLayout.WEST
,和BorderLayout.CENTER
。GridBagLayout
课程需要一个GridBagConstraints
对象。 未通过正确类型的约束对象会导致一个IllegalArgumentException
。如果当前的布局管理器实现
LayoutManager2
,那么就调用LayoutManager2.addLayoutComponent(Component,Object)
。 如果当前的布局管理器不实现LayoutManager2
,并且约束是一个String
,那么它将调用LayoutManager.addLayoutComponent(String,Component)
。如果组件不是此容器的祖先,并且具有非空父项,则在将其添加到此容器之前,它将从其当前父进程中删除。
如果程序需要跟踪每个添加到容器的请求,那么这种方法将会覆盖所有其他添加方法。 一个重写方法通常应该包括调用超类的方法版本:
super.addImpl(comp, constraints, index)
该方法更改布局相关信息,因此使组件层次结构无效。 如果容器已经被显示,则此后必须验证层次结构,以显示添加的组件。
- 重写:
-
addImpl
在Container
- 参数
-
comp
- 要添加的组件 -
constraints
- 表示此组件的布局约束的对象 -
index
- 容器列表中要插入组件的位置,其中-1
表示附加到最后 - 另请参见:
-
Container.add(Component)
,Container.add(Component, int)
,Container.add(Component, java.lang.Object)
,Container.invalidate()
,LayoutManager
,LayoutManager2
-
remove
public void remove(int index)
从此窗格中删除索引的组件。 这是绝对的索引,忽略了层。- 重写:
-
remove
在Container
- 参数
-
index
- 一个int指定要删除的组件 - 另请参见:
-
getIndexOf(java.awt.Component)
-
removeAll
public void removeAll()
从此容器中删除所有组件。- 重写:
-
removeAll
在Container
- 从以下版本开始:
- 1.5
- 另请参见:
-
Container.add(java.awt.Component)
,Container.remove(int)
,Container.invalidate()
-
isOptimizedDrawingEnabled
@BeanProperty(bound=false) public boolean isOptimizedDrawingEnabled()
如果窗格中的组件可以重叠,则返回false,这样使得优化的绘图不可能。 否则返回true。- 重写:
-
isOptimizedDrawingEnabled
在JComponent
- 结果
- 如果组件可以重叠,则为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。 请注意,所有JFrames的根目录都有一个JLayeredPane,所以JFrame中的任何组件都将有一个JLayeredPane父项。
-
setLayer
public void setLayer(Component c, int layer)
设置指定组件上的图层属性,使其成为该图层中最底层的组件。 在添加到父母之前应该调用。- 参数
-
c
- 为图层设置的组件 -
layer
- 一个int指定要设置的图层,其中较低的数字更靠近底部
-
setLayer
public void setLayer(Component c, int layer, int position)
设置指定组件的层属性,并设置其在该层中的位置。- 参数
-
c
- 为图层设置的组件 -
layer
- 指定要设置的图层的int,其中较小的数字更靠近底部 -
position
- 一个int指定层内的位置,其中0是最上面的位置,-1是最下面的位置
-
getLayer
public int getLayer(Component c)
返回指定Component的layer属性。- 参数
-
c
- 要检查的组件 - 结果
- 一个int指定组件的当前图层
-
getIndexOf
public int getIndexOf(Component c)
返回指定Component的索引。 这是绝对的索引,忽略了层。 索引号(如位置号)的索引为零时的最高分量。 更大的数字更接近底部。- 参数
-
c
- 要检查的组件 - 结果
- 一个指定组件索引的int
-
moveToFront
public void moveToFront(Component c)
将组件移动到当前层(位置0)中组件的顶部。- 参数
-
c
- 要移动的组件 - 另请参见:
-
setPosition(Component, int)
-
moveToBack
public void moveToBack(Component c)
将组件移动到当前层中的组件底部(位置-1)。- 参数
-
c
- 要移动的组件 - 另请参见:
-
setPosition(Component, int)
-
setPosition
public void setPosition(Component c, int position)
将组件移动到其当前层中的position
,其中0是层内的最高位置,-1是最底层的位置。注意:位置编号由java.awt.Container定义,与层编号相反。 较低的位置数字更靠近顶部(0是最上面的),而较高的位置数字更接近底部。
- 参数
-
c
- 要移动的组件 -
position
- 在-1..N-1范围内的int,其中N是组件当前层中的组件数
-
getPosition
public int getPosition(Component c)
获取组件在其层内的相对位置。- 参数
-
c
- 要检查的组件 - 结果
- 给出组件位置的int,其中0是最高位置,最高索引值=该层的组件的计数计数,减1
- 另请参见:
-
getComponentCountInLayer(int)
-
highestLayer
public int highestLayer()
返回所有当前子节点的最高层值。 如果没有孩子,则返回0。- 结果
- 指示窗格中最顶层组件的层的int,如果没有子项则为零
-
lowestLayer
public int lowestLayer()
返回所有当前子项的最低层值。 如果没有孩子,则返回0。- 结果
- 指示窗格中最底层组件的层的int,如果没有子项则为零
-
getComponentCountInLayer
public int getComponentCountInLayer(int layer)
返回当前在指定图层中的子项数。- 参数
-
layer
- 一个int指定要检查的图层 - 结果
- 一个int指定该层中的组件数量
-
getComponentsInLayer
public Component[] getComponentsInLayer(int layer)
返回指定图层中的组件数组。- 参数
-
layer
- 一个int指定要检查的图层 - 结果
- 该层中包含的一组组件
-
paint
public void paint(Graphics g)
在指定的图形上下文中绘制JLayeredPane。
-
getComponentToLayer
protected Hashtable<Component,Integer> getComponentToLayer()
返回将组件映射到图层的散列表。- 结果
- Hashtable用于将组件映射到它们的层
-
getObjectForLayer
protected Integer getObjectForLayer(int layer)
返回与指定图层相关联的整数对象。- 参数
-
layer
- 指定图层的int - 结果
- 该层的整数对象
-
insertIndexForLayer
protected int insertIndexForLayer(int layer, int position)
确定基于层和位置请求插入新孩子的正确位置的原始方法。- 参数
-
layer
- 一个指定图层的int -
position
- 指定图层内的位置的int - 结果
- 一个int给出(绝对)插入索引
- 另请参见:
-
getIndexOf(java.awt.Component)
-
paramString
protected String paramString()
返回此JLayeredPane的字符串表示形式。 该方法仅用于调试目的,并且返回的字符串的内容和格式可能因实现而异。 返回的字符串可能为空,但可能不是null
。- 重写:
-
paramString
在JComponent
- 结果
- 这个JLayeredPane的字符串表示形式。
-
getAccessibleContext
@BeanProperty(bound=false) public AccessibleContext getAccessibleContext()
获取与此JLayeredPane关联的AccessibleContext。 对于分层窗格,AccessibleContext采用AccessibleJLayeredPane的形式。 如有必要,将创建一个新的AccessibleJLayeredPane实例。- Specified by:
-
getAccessibleContext
在接口Accessible
- 重写:
-
getAccessibleContext
在Component
- 结果
- 一个AccessibleJLayeredPane,作为这个JLayeredPane的AccessibleContext
-
-