|
|||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |
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其中最左边的组件最接近显示区的顶部。
可以通过调用 moveToFront
或 moveToBack
将组件移入到其所在层的顶部或底部位置。
还可以直接指定某层中组件的位置。有效的位置范围是从 0 到该层中组件数减一所得的值。值 -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使用正常的 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 表示最底层位置。 |
从类 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.NORTH
、BorderLayout.SOUTH
、BorderLayout.EAST
、BorderLayout.WEST
和BorderLayout.CENTER
。GridBagLayout
类需要一个GridBagConstraints
对象。如果传递正确的约束对象类型时失败,则会导致IllegalArgumentException
。如果布局管理器既实现了
LayoutManager
接口又实现了LayoutManager2
接口,则调用LayoutManager2
方法。注意,如果组件已经存在于此容器或其子容器中,那么在将组件添加到此容器之前,要从该容器中移除它。
在其他所有添加方法引用此方法时,如果某个程序需要追踪每个添加到容器的请求,那么这就是要重写的方法。被重写的方法通常应该包括一个对该方法的父类版本的调用:
super.addImpl(comp, constraints, index)
-
- 参数:
-
comp
- 要添加的组件 -
constraints
- 表示此组件的布局限制的对象 - 另请参见:
-
Container.add(Component)
,Container.add(Component, int)
,Container.add(Component, java.lang.Object)
,LayoutManager
,LayoutManager2