Java プラットフォーム 1.2

javax.swing
クラス JRootPane

java.lang.Object
  |
  +--java.awt.Component
        |
        +--java.awt.Container
              |
              +--javax.swing.JComponent
                    |
                    +--javax.swing.JRootPane

public class JRootPane
extends JComponent
implements Accessible

コンテナ階層の基本コンポーネントです。JComponent が JFC/Swing に対する基本コンポーネントであるように、JRootPane は JFC/Swing ウィンドウ、フレーム、および区画コンテナに対する基本コンポーネントです。ただし、ほかのクラスは継承を使って JComponent の機能を利用しますが、コンテナクラスは処理を JRootPane のインスタンスに委譲します。そのようなコンテナには、重量コンテナの JFrame、JDialog、JWindow、および JApplet と、軽量コンテナの JInternalFrame があります。

次の図はこれらの関係を示しています。

「重量」コンポーネント (ピアまたはホストシステム上のネイティブコンポーネントに委譲するコンポーネント) は濃く重そうなボックスで示されています。4 つの重量 JFC/Swing コンテナ (JFrame、JDialog、JWindow、および JApplet) は、それらが拡張する AWT クラスとの関連で示されています。Swing ライブラリ内の重量コンテナはこれら 4 つのコンポーネントだけです。また、軽量コンテナの JInternalPane も示されています。これら 5 つの JFC/Swing コンテナはすべて RootPaneContainer インタフェースを実装し、処理を JRootPane (一番上の小さな「ハンドル」が付いている) に委譲します。
注: JComponent のメソッド getRootPane を使うと、指定されたコンポーネントを格納している JRootPane を取得できます。
右側の図は JRootPane の構造を示しています。JRootpane は glassPane、menuBar (オプション)、contentPane から成ります (JLayeredPane は menuBar と contentPane を管理する)。glassPane はすべての一番上に置かれ、マウスの動作を捕捉します。glassPane は (contentPane と同様に)、任意コンポーネントにすることができるので、描画のために glassPane をセットアップすることもできます。glassPane 上の線とイメージは、境界に制限されることなく、下のフレーム全体を覆うことができます。

menuBar コンポーネントはなくてもかまいませんが、layeredPane、contentPane、および glassPane は必ず必要です。これらを null に設定しようとすると、例外が生成されます。

contentPane は JRootPane のすべての子の親である必要があります。次のように直接 JRootPane に追加するのではなく、

       rootPane.add(child);
 
次のように JRootPane の contentPane に追加します。
       rootPane.getContentPane().add(child);
 
同様の原則が、レイアウトマネージャの設定、コンポーネントの削除、および子のリスト表示などでも適用されます。これらのメソッドはすべて JRootPane ではなく、contentPane で呼び出されます。
注: contentPane のデフォルトのレイアウトマネージャは BorderLayout マネージャです。ただし、JRootPane はカスタム LayoutManager を使用します。したがって、JRootPane に追加したコンポーネントのレイアウトマネージャを変更したいときは、必ず次のようなコードを使ってください。
    rootPane.getContentPane().setLayout(new BoxLayout());
 
JMenuBar コンポーネントが JRootPane で設定された場合は、フレームの上端に沿って配置されます。contentPane は、残りの領域に収まるように位置とサイズが調整されます (JMenuBar と contentPanelayeredPane コンポーネントの JLayeredPane.FRAME_CONTENT_LAYER レイヤに追加される)。

layeredPane は JRootPane のすべての子の親です。layeredPane は、複数のレイヤでコンポーネントを追加する機能を提供する JLayeredPane のインスタンスです。この機能は、メニューポップアップやダイアログボックスでの作業およびドラッグなど、区画内のほかのすべてのコンポーネントの一番上にコンポーネントを配置する必要がある状況でとても便利です。

glassPane は JRootPane のほかのすべてのコンポーネントの一番上に置かれます。これにより、ほかのすべてのコンポーネントの上に描画するための便利な場所が提供され、ドラッグや描画のときに便利な、マウスイベントの捕捉が可能になります。glassPane で setVisible を使うと、いつ glassPane がほかの子の上に表示されるかを制御できます。デフォルトでは、glassPane は可視ではありません。

JRootPane によって使用されるカスタム LayoutManager は以下のことを保証します。

  1. glassPane がある場合、glassPane は JRootPane (境界 - インセット) の表示可能領域全体を埋める
  2. layeredPane は JRootPane (境界 - インセット) の表示可能領域全体を埋める
  3. menuBar は layeredPane() の上端に配置される
  4. contentPane は、MenuBar を除いた (存在する場合) 表示可能領域全体を埋める
JRootPane のビュー階層のほかのビューはすべて無視されます。

JRootPane の LayoutManager を置換する場合は、これらのビューすべてを管理する必要があります。したがって、通常は JRootPane ではなく contentPane のレイアウトマネージャを変更するようにしてください。

警告: このクラスの直列化されたオブジェクトは、今後の Swing リリースと互換ではなくなる予定です。現在の直列化のサポートは、短期間の運用や、同じバージョンの Swing を実行するアプリケーション間の RMI に適しています。今後の Swing リリースでは、長期間の持続性をサポートする予定です。

関連項目:
JLayeredPane, JMenuBar, JWindow, JFrame, JDialog, JApplet, JInternalFrame, JComponent, BoxLayout, Mixing Heavy and Light Components, 直列化された形式

内部クラスの概要
protected  class JRootPane.AccessibleJRootPane
          オブジェクトのユーザ補助機能を取得するために使用するクラスです。
protected  class JRootPane.RootLayout
          layeredPane、glassPane、および menuBar のレイアウトを処理するカスタムレイアウトマネージャです。
 
クラス javax.swing.JComponent から継承した内部クラス
JComponent.AccessibleJComponent
 
フィールドの概要
protected  Container contentPane
          コンテンツ区画です。
protected  JButton defaultButton
          区画がフォーカスと、Enter キーを押すなどの UI 固有のアクションを持ったときにアクティブになるボタンです。
protected  javax.swing.JRootPane.DefaultAction defaultPressAction
          defaultButton が押されたときに実行されるアクションです。
protected  javax.swing.JRootPane.DefaultAction defaultReleaseAction
          defaultButton が離されたときに実行されるアクションです。
protected  Component glassPane
          メニューバーとコンテンツ区画にオーバーレイするガラス区画です。
protected  JLayeredPane layeredPane
          メニューバーとコンテンツ区画を管理する階層化区画です。
protected  JMenuBar menuBar
          メニューバーです。
 
クラス 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
 
コンストラクタの概要
JRootPane()
          JRootPane を作成し、glassPane、LayeredPane、および contentPane を設定します。
 
メソッドの概要
protected  void addImpl(Component comp, Object constraints, int index)
          ガラスコンポーネントの位置が 0 の子に対して強制するためにオーバーライドされます。
 void addNotify()
          自身を新しいルート区画として SystemEventQueueUtils に登録します。
protected  Container createContentPane()
          デフォルトの contentPane を作成するためにコンストラクタのメソッドによって呼び出されます。
protected  Component createGlassPane()
          デフォルトの glassPane を作成するためにコンストラクタのメソッドによって呼び出されます。
protected  JLayeredPane createLayeredPane()
          デフォルトの layeredPane を作成するためにコンストラクタのメソッドによって呼び出されます。
protected  LayoutManager createRootLayout()
          デフォルトの layoutManager を作成するためにコンストラクタのメソッドによって呼び出されます。
 AccessibleContext getAccessibleContext()
          この JComponent に関連付けられている AccessibleContext を取得します。
 Container getContentPane()
          ルート区画が親になるコンポーネントを保持するコンテナである、コンテンツ区画を返します。
 JButton getDefaultButton()
          この JRootPane の現在のデフォルトボタンを返します。
 Component getGlassPane()
          この JRootPane の現在のガラス区画を返します。
 JMenuBar getJMenuBar()
          階層化区画からメニューバーを返します。
 JLayeredPane getLayeredPane()
          ルート区画が使用する階層化区画を取得します。
 JMenuBar getMenuBar()
          推奨されません。 Swing バージョン 1.0.3 で getJMenubar() に置き換えられました。
 boolean isFocusCycleRoot()
          JRootPane をフォーカスサイクルのルートにします。
 boolean isValidateRoot()
          この JRootPane の下位オブジェクトが revalidate を呼び出した場合、ここから下へ向かって検証を行います。
protected  String paramString()
          この JRootPane の文字列表現を返します。
 void removeNotify()
          自身を SystemEventQueueUtils から登録解除します。
 void setContentPane(Container content)
          ルート区画が親になるコンポーネントを保持するコンテナである、コンテンツ区画を設定します。
 void setDefaultButton(JButton defaultButton)
          この JRootPane の現在のデフォルトボタンを設定します。
 void setGlassPane(Component glass)
          指定した Component がこのルート区画のガラス区画になるように設定します。
 void setJMenuBar(JMenuBar menu)
          階層化区画で使用されるメニューバーを追加または変更します。
 void setLayeredPane(JLayeredPane layered)
          ルート区画に階層化区画を設定します。
 void setMenuBar(JMenuBar menu)
          推奨されません。 Swing バージョン 1.0.3 で setJMenuBar(JMenuBar menu) に置き換えられました。
 
クラス javax.swing.JComponent から継承したメソッド
addAncestorListener, addPropertyChangeListener, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, fireVetoableChange, getActionForKeyStroke, getAlignmentX, getAlignmentY, getAutoscrolls, getBorder, getBounds, getClientProperty, getComponentGraphics, getConditionForKeyStroke, getDebugGraphicsOptions, getGraphics, getHeight, getInsets, getInsets, getLocation, getMaximumSize, getMinimumSize, getNextFocusableComponent, getPreferredSize, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getToolTipText, getTopLevelAncestor, getUIClassID, getVisibleRect, getWidth, getX, getY, grabFocus, hasFocus, isDoubleBuffered, isFocusTraversable, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingTile, isRequestFocusEnabled, paint, paintBorder, paintChildren, paintComponent, paintImmediately, paintImmediately, processComponentKeyEvent, processFocusEvent, processKeyEvent, processMouseMotionEvent, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removePropertyChangeListener, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, resetKeyboardActions, reshape, revalidate, scrollRectToVisible, setAlignmentX, setAlignmentY, setAutoscrolls, setBackground, setBorder, setDebugGraphicsOptions, setDoubleBuffered, setEnabled, setFont, setForeground, setMaximumSize, setMinimumSize, setNextFocusableComponent, setOpaque, setPreferredSize, setRequestFocusEnabled, setToolTipText, setUI, setVisible, unregisterKeyboardAction, update, updateUI
 
クラス java.awt.Container から継承したメソッド
add, add, add, add, add, addContainerListener, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getLayout, insets, invalidate, isAncestorOf, layout, list, list, locate, minimumSize, paintComponents, preferredSize, print, printComponents, processContainerEvent, processEvent, remove, remove, removeAll, removeContainerListener, setLayout, validate, validateTree
 
クラス java.awt.Component から継承したメソッド
action, add, addComponentListener, addFocusListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addPropertyChangeListener, bounds, checkImage, checkImage, coalesceEvents, contains, createImage, createImage, disable, disableEvents, dispatchEvent, enable, enable, enableEvents, enableInputMethods, getBackground, getBounds, getColorModel, getComponentOrientation, getCursor, getDropTarget, getFont, getFontMetrics, getForeground, getInputContext, getInputMethodRequests, getLocale, getLocation, getLocationOnScreen, getName, getParent, getPeer, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, hide, imageUpdate, inside, isDisplayable, isEnabled, isLightweight, isShowing, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, postEvent, prepareImage, prepareImage, printAll, processComponentEvent, processInputMethodEvent, processMouseEvent, remove, removeComponentListener, removeFocusListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removePropertyChangeListener, repaint, repaint, repaint, resize, resize, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setLocale, setLocation, setLocation, setName, setSize, setSize, show, show, size, toString, transferFocus
 
クラス java.lang.Object から継承したメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

フィールドの詳細

menuBar

protected JMenuBar menuBar
メニューバーです。

contentPane

protected Container contentPane
コンテンツ区画です。

layeredPane

protected JLayeredPane layeredPane
メニューバーとコンテンツ区画を管理する階層化区画です。

glassPane

protected Component glassPane
メニューバーとコンテンツ区画にオーバーレイするガラス区画です。マウスの動作などを捕捉できます。

defaultButton

protected JButton defaultButton
区画がフォーカスと、Enter キーを押すなどの UI 固有のアクションを持ったときにアクティブになるボタンです。

defaultPressAction

protected javax.swing.JRootPane.DefaultAction defaultPressAction
defaultButton が押されたときに実行されるアクションです。
関連項目:
defaultButton

defaultReleaseAction

protected javax.swing.JRootPane.DefaultAction defaultReleaseAction
defaultButton が離されたときに実行されるアクションです。
関連項目:
defaultButton
コンストラクタの詳細

JRootPane

public JRootPane()
JRootPane を作成し、glassPane、LayeredPane、および contentPane を設定します。
メソッドの詳細

createLayeredPane

protected JLayeredPane createLayeredPane()
デフォルトの layeredPane を作成するためにコンストラクタのメソッドによって呼び出されます。デフォルトでは、新しい JLayeredPane を作成します。

createContentPane

protected Container createContentPane()
デフォルトの contentPane を作成するためにコンストラクタのメソッドによって呼び出されます。デフォルトでは、このメソッドは新しい JComponent を作成し、LayoutManager として BorderLayout を設定します。

createGlassPane

protected Component createGlassPane()
デフォルトの glassPane を作成するためにコンストラクタのメソッドによって呼び出されます。デフォルトでは、このメソッドは可視性を false に設定して新しい JComponent を作成します。

createRootLayout

protected LayoutManager createRootLayout()
デフォルトの layoutManager を作成するためにコンストラクタのメソッドによって呼び出されます。

setJMenuBar

public void setJMenuBar(JMenuBar menu)
階層化区画で使用されるメニューバーを追加または変更します。
パラメータ:
menu - 追加する JMenuBar

setMenuBar

public void setMenuBar(JMenuBar menu)
推奨されません。 Swing バージョン 1.0.3 で setJMenuBar(JMenuBar menu) に置き換えられました。
メニューバーの値を指定します。

getJMenuBar

public JMenuBar getJMenuBar()
階層化区画からメニューバーを返します。
戻り値:
区画で使用される JMenuBar

getMenuBar

public JMenuBar getMenuBar()
推奨されません。 Swing バージョン 1.0.3 で getJMenubar() に置き換えられました。
メニューバーの値を返します。

setContentPane

public void setContentPane(Container content)
ルート区画が親になるコンポーネントを保持するコンテナである、コンテンツ区画を設定します。
パラメータ:
content - コンポーネントコンテンツに使用する Container
例外:
IllegalComponentStateException - (実行時例外)。コンテンツ区画パラメータが null の場合

getContentPane

public Container getContentPane()
ルート区画が親になるコンポーネントを保持するコンテナである、コンテンツ区画を返します。
戻り値:
コンポーネントコンテンツを保持する Container

setLayeredPane

public void setLayeredPane(JLayeredPane layered)
ルート区画に階層化区画を設定します。通常、階層化区画はコンテンツ区画とオプションの JMenuBar を保持します。
パラメータ:
layered - 使用する JLayeredPane
例外:
IllegalComponentStateException - (実行時例外)。階層化区画パラメータが null の場合

getLayeredPane

public JLayeredPane getLayeredPane()
ルート区画が使用する階層化区画を取得します。通常、階層化区画はコンテンツ区画とオプションの JMenuBar を保持します。
戻り値:
現在使用中の JLayeredPane

setGlassPane

public void setGlassPane(Component glass)
指定した Component がこのルート区画のガラス区画になるように設定します。ルート区画が入力イベントを捕捉する必要があるときには必ず可視にされるので、通常、ガラス区画は軽量の透明なコンポーネントである必要があります。たとえば、DefaultDesktop を使用しているときは、1 つの JInternalFrame だけがアクティブになり、非アクティブな JInternalFrame のガラス区画は、非アクティブな JInternalFrame をクリックしてアクティブにできるように可視にされます。
パラメータ:
glass - この JRootPane のガラス区画として使用する Component

getGlassPane

public Component getGlassPane()
この JRootPane の現在のガラス区画を返します。
戻り値:
現在のガラス区画
関連項目:
setGlassPane(java.awt.Component)

isFocusCycleRoot

public boolean isFocusCycleRoot()
JRootPane をフォーカスサイクルのルートにします。つまり、デフォルトでは、ルート区画内でのタブ移動は、その区画のコンポーネント間を移動しますが、区画の外には移動しません。
戻り値:
true
オーバーライド:
クラス JComponent 内の isFocusCycleRoot
関連項目:
JComponent.isFocusCycleRoot()

isValidateRoot

public boolean isValidateRoot()
この JRootPane の下位オブジェクトが revalidate を呼び出した場合、ここから下へ向かって検証を行います。

コンポーネントおよびその子孫の再配置の延期された要求、つまり revalidate() の呼び出しは、JRootPane または JScrollPane のどちらかに転送されます。これはどちらのクラスも isValidateRoot() をオーバーライドして true を返すためです。

戻り値:
true
オーバーライド:
クラス JComponent 内の isValidateRoot
関連項目:
JComponent.isValidateRoot()

addNotify

public void addNotify()
自身を新しいルート区画として SystemEventQueueUtils に登録します。
オーバーライド:
クラス JComponent 内の addNotify

removeNotify

public void removeNotify()
自身を SystemEventQueueUtils から登録解除します。
オーバーライド:
クラス JComponent 内の removeNotify

setDefaultButton

public void setDefaultButton(JButton defaultButton)
この JRootPane の現在のデフォルトボタンを設定します。デフォルトボタンは、ボタンにキーボードフォーカスがあるかどうかに関わらず、RootPane で UI 定義の起動イベント (通常は Enter キー) が発生したときに起動されるボタンです (RootPane 内に JTextPane などの起動イベントを消費する別のコンポーネントがある場合を除く)。デフォルトの起動が機能するには、ボタンは起動が発生した時点で RootPane の使用可能な子孫である必要があります。この RootPane からデフォルトボタンを削除するには、このプロパティを null に設定します。
パラメータ:
defaultButton - デフォルトボタンになる JButton
関連項目:
JButton.isDefaultButton()

getDefaultButton

public JButton getDefaultButton()
この JRootPane の現在のデフォルトボタンを返します。
戻り値:
現在デフォルトボタンである JButton

addImpl

protected void addImpl(Component comp,
                       Object constraints,
                       int index)
ガラスコンポーネントの位置が 0 の子に対して強制するためにオーバーライドされます。
オーバーライド:
クラス Container 内の addImpl

paramString

protected String paramString()
この JRootPane の文字列表現を返します。このメソッドはデバッグ専用であり、返される文字列の内容および形式は実装によって異なります。返される文字列は空の場合がありますが、null にはなりません。

JFC コンポーネントの新しい側面についての情報を返すには、paramString() をオーバーライドします。

戻り値:
この JRootPane の文字列表現
オーバーライド:
クラス JComponent 内の paramString

getAccessibleContext

public AccessibleContext getAccessibleContext()
この JComponent に関連付けられている AccessibleContext を取得します。
定義:
インタフェース Accessible 内の getAccessibleContext
戻り値:
この JComponent の AccessibleContext
オーバーライド:
クラス JComponent 内の getAccessibleContext

Java プラットフォーム 1.2

バグや機能要求の報告
新しい javadoc の表示についてのコメントやご提案
Java は、米国およびその他の国における米国 Sun Microsystems, Inc. の商標もしくは登録商標です。
Copyright 1993-1998 Sun Microsystems, Inc. 901 San Antonio Road,
Palo Alto, California, 94303, U.S.A. All Rights Reserved.