javax.swing

接口
异常
java.lang.Object
  继承者 java.awt.Component
      继承者 java.awt.Container
          继承者 javax.swing.JComponent
              继承者 javax.swing.JRootPane
所有已实现的接口:
ImageObserver, MenuContainer, Serializable, Accessible

public class JRootPane
     
extends JComponent
implements Accessible

该轻量级容器由 JFrameJDialogJWindowJAppletJInternalFrame 在后台使用。有关根窗格所提供功能的面向任务的信息,请参阅 The Java Tutorial 中的 How to Use Root Panes 一节。

下面的图像显示了使用根窗格的各个类之间的关系。

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

“重量级”组件(指委托给主机系统上的同位体或本地组件的组件)用较暗的、更重的框来显示。四个重量级 JFC/Swing 容器( JFrameJDialogJWindowJApplet)的显示与它们扩展的 AWT 类有关。这四个组件是 Swing 库中仅有的重量级容器。这里还显示了轻量级容器 JInternalFrame。所有这五个 JFC/Swing 容器都实现 RootPaneContainer 接口,并且它们都将其操作委托给 JRootPane(顶端显示有一个小 "handle")。
注:使用 JComponentgetRootPane 方法可获取包含给定组件的 JRootPane
以下文本是对此图像的描述。
右图显示了 JRootPane 的结构。 JRootpane 由一个 glassPane 和一个可选的 menuBar 以及一个 contentPane 组成。( JLayeredPane 负责管理 menuBarcontentPane。) glassPane 位于所有窗格之上,以便能够截取鼠标移动。由于 glassPane(与 contentPane 类似)可以是一个任意的组件,也可以设置 glassPane 来进行绘制。这样 glassPane 上的线条和图像可涵盖其下的窗体,不受其边界的限制。

尽管 menuBar 组件为可选,但 layeredPanecontentPaneglassPane 总是存在的。试图将它们设置为 null 将生成异常。

要将组件添加到 JRootPane(可选的菜单栏除外),您可以将对象添加到 JRootPanecontentPane,如下所示:

       rootPane.getContentPane().add(child);
 
可用同样的方法设置布局管理器、移除组件以及列出子级等。所有这些方法都是在 contentPane 上而不是 JRootPane 上调用的。
注: contentPane 的默认布局管理器是 BorderLayout 管理器。但是, JRootPane 使用一个自定义的 LayoutManager。所以,如果您希望更改已添加到 JRootPane 中的组件的布局管理器,一定要确保使用如下代码:
    rootPane.getContentPane().setLayout(new BoxLayout());
 
如果已在 JRootPane 上设置了 JMenuBar 组件,它将沿窗体的上边缘放置。 contentPane 的位置和大小将进行调整以填充剩余的区域。( JMenuBarcontentPane 被添加到位于 JLayeredPane.FRAME_CONTENT_LAYER 层的 layeredPane 组件中。)

layeredPaneJRootPane 中所有子级的父级,既是菜单的直接父级,又是添加到 contentPane 中的所有组件的祖父级。它是 JLayeredPane 的实例,提供在若干层上添加组件的能力。在处理弹出菜单、对话框以及拖动时,即要求将组件置于窗格中所有其它组件之上的情况下,此功能非常有用。

glassPane 位于 JRootPane 中所有其它组件之上。这为在所有其它组件上绘图和截取鼠标事件提供了方便,这对拖动和绘图都非常有用。开发人员可在 glassPane 上使用 setVisible 控制 glassPane 在所有其它子级上面显示的时间。默认情况下,glassPane 为不可见。

JRootPane 所使用的自定义 LayoutManager 可确保:

  1. glassPane 填充了 JRootPane 的整个可查看区域(边界 - insets)。
  2. layeredPane 填充了 JRootPane 的整个可查看区域。(边界 - insets)
  3. menuBar 位于 layeredPane 的上边缘。
  4. contentPane 填充了整个可查看区域,减去 menuBar(如果有)。
JRootPane 视图层次结构中的任何其它视图均忽略。

如果您替换 JRootPaneLayoutManager,您将负责管理所有这些视图。所以通常情况下,应该确保更改的是 contentPane 的布局管理器,而不是 JRootPane 自身的布局管理器。

Swing 的绘制架构要求在所有其它组件之上的包含层次结构中有一个不透明的 JComponent。这通常通过使用内容窗格来实现。如果要替换内容窗格,建议使用 setOpaque(true) 将内容窗格设置为不透明。另外,如果内容窗格重写 paintComponent,还需要在 paintComponent 中用不透明颜色将背景完全填充。

警告:Swing 不是线程安全的。有关更多信息,请参阅 Swing's Threading Policy

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

另请参见:
JLayeredPane, JMenuBar, JWindow, JFrame, JDialog, JApplet, JInternalFrame, JComponent, BoxLayout, Mixing Heavy and Light Components

嵌套类摘要
protected  class JRootPane.AccessibleJRootPane
          此类实现对 JRootPane 类的可访问性支持。
protected  class JRootPane.RootLayout
          该自定义布局管理器负责 layeredPane、glassPane 和 menuBar 的布局。
 
从类 javax.swing.JComponent 继承的嵌套类/接口
JComponent.AccessibleJComponent
 
从类 java.awt.Container 继承的嵌套类/接口
Container.AccessibleAWTContainer
 
从类 java.awt.Component 继承的嵌套类/接口
Component.AccessibleAWTComponent, Component.BaselineResizeBehavior, Component.BltBufferStrategy, Component.FlipBufferStrategy
 
字段摘要
static int COLOR_CHOOSER_DIALOG
          供 windowDecorationStyle 属性使用的常量。
protected  Container contentPane
          内容窗格。
protected  JButton defaultButton
          当窗格成为焦点并有类似按下 Enter 键的特定于 UI 的操作发生时被激活的按钮。
protected  javax.swing.JRootPane.DefaultAction defaultPressAction
          已过时。 从 Java 2 platform v1.3 开始
protected  javax.swing.JRootPane.DefaultAction defaultReleaseAction
          已过时。 从 Java 2 platform v1.3 开始
static int ERROR_DIALOG
          供 windowDecorationStyle 属性使用的常量。
static int FILE_CHOOSER_DIALOG
          供 windowDecorationStyle 属性使用的常量。
static int FRAME
          供 windowDecorationStyle 属性使用的常量。
protected  Component glassPane
          覆盖菜单栏和内容窗格的玻璃窗格,便于截取鼠标移动等操作。
static int INFORMATION_DIALOG
          供 windowDecorationStyle 属性使用的常量。
protected  JLayeredPane layeredPane
          管理菜单栏和内容窗格的分层窗格。
protected  JMenuBar menuBar
          菜单栏。
static int NONE
          供 windowDecorationStyle 属性使用的常量。
static int PLAIN_DIALOG
          供 windowDecorationStyle 属性使用的常量。
static int QUESTION_DIALOG
          供 windowDecorationStyle 属性使用的常量。
static int WARNING_DIALOG
          供 windowDecorationStyle 属性使用的常量。
 
从类 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
 
构造方法摘要
JRootPane()
          创建 JRootPane,设置其 glassPanelayeredPane 以及 contentPane
 
方法摘要
protected  void addImpl(Component comp, Object constraints, int index)
          重写以便将玻璃组件的位置强行设置成零位子级。
 void addNotify()
          将本身注册为 SystemEventQueueUtils 的新的根窗格。
protected  Container createContentPane()
          由构造方法调用以便创建默认的 contentPane
protected  Component createGlassPane()
          由构造方法调用以便创建默认的 glassPane
protected  JLayeredPane createLayeredPane()
          由构造方法调用以便创建默认的 layeredPane
protected  LayoutManager createRootLayout()
          由构造方法调用以便创建默认的 layoutManager
 AccessibleContext getAccessibleContext()
          获取与此 JRootPane 相关联的 AccessibleContext
 Container getContentPane()
          返回内容窗格,它是保存以根窗格为父级的组件的容器。
 JButton getDefaultButton()
          返回 defaultButton 属性的值。
 Component getGlassPane()
          返回此 JRootPane 的当前玻璃窗格。
 JMenuBar getJMenuBar()
          返回窗格层的菜单栏。
 JLayeredPane getLayeredPane()
          获取供根窗格使用的分层窗格。
 JMenuBar getMenuBar()
          已过时。 从 Swing 版本 1.0.3 开始,由 getJMenuBar() 取代。
 RootPaneUI getUI()
          返回呈现此组件的 L&F 对象。
 String getUIClassID()
          返回一个指定呈现此组件的 L&F 类名称的字符串。
 int getWindowDecorationStyle()
          返回一个常量,它标识 JRootPane 提供的 Window 装饰类型。
 boolean isOptimizedDrawingEnabled()
          glassPanecontentPane 具有相同的边界,这意味着 JRootPane 并不对其子级平铺,应返回 false。
 boolean isValidateRoot()
          如果此 JRootPane 的一个后代调用 revalidate,将从此位置开始进行验证。
protected  String paramString()
          返回此 JRootPane 的字符串表示形式。
 void removeNotify()
          将本身从 SystemEventQueueUtils 注销。
 void setContentPane(Container content)
          设置内容窗格,它是保存以根窗格为父级的组件的容器。
 void setDefaultButton(JButton defaultButton)
          设置 defaultButton 属性,它确定此 JRootPane 的当前默认按钮。
 void setDoubleBuffered(boolean aFlag)
          设置此组件是否应该使用缓冲区进行绘制。
 void setGlassPane(Component glass)
          将指定的 Component 设置为此根窗格的玻璃窗格。
 void setJMenuBar(JMenuBar menu)
          添加或更改在分层窗格中使用的菜单栏。
 void setLayeredPane(JLayeredPane layered)
          设置供根窗格使用的分层窗格。
 void setMenuBar(JMenuBar menu)
          已过时。 从 Swing 版本 1.0.3 开始,由 setJMenuBar(JMenuBar menu) 取代。
 void setUI(RootPaneUI ui)
          设置呈现此组件的 L&F 对象。
 void setWindowDecorationStyle(int windowDecorationStyle)
          设置 JRootPane 应提供的 Window 装饰类型(例如,边界、关闭 Window 的小部件、标题等)。
 void updateUI()
          将 UI 属性重置为当前外观对应的值。
 
从类 javax.swing.JComponent 继承的方法
addAncestorListener, 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, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isPaintingForPrint, isPaintingTile, isRequestFocusEnabled, paint, paintBorder, paintChildren, paintComponent, paintImmediately, paintImmediately, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processKeyBinding, processKeyEvent, processMouseEvent, processMouseMotionEvent, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resetKeyboardActions, reshape, revalidate, scrollRectToVisible, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, setBackground, setBorder, setComponentPopupMenu, setDebugGraphicsOptions, setDefaultLocale, setEnabled, setFocusTraversalKeys, setFont, setForeground, setInheritsPopupMenu, setInputMap, setInputVerifier, setMaximumSize, setMinimumSize, setNextFocusableComponent, setOpaque, setPreferredSize, setRequestFocusEnabled, setToolTipText, setTransferHandler, setUI, setVerifyInputWhenFocusTarget, setVisible, unregisterKeyboardAction, update
 
从类 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, remove, removeAll, 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,

JDK 1.6 中文手册