モジュール java.desktop
パッケージ javax.swing

クラスJRootPane

すべての実装されたインタフェース:
ImageObserver, MenuContainer, Serializable, Accessible

public class JRootPane
extends JComponent
implements Accessible
JFrameJDialogJWindowJApplet、およびJInternalFrameによって内部的に使用される軽量コンテナ。 ルート・ペインが提供するタスク指向の情報については、『The Java Tutorial』の「How to Use Root Panes」を参照してください。

次のイメージはルート・ペインを使用するクラス間の関係を示します。

次の文は、この図について説明しています。

「重量」コンポーネント(ピアまたはホスト・システム上のネイティブ・コンポーネントに委譲するコンポーネント)は濃く重そうなボックスで示されています。 4つの重量JFC/Swingコンテナ(JFrameJDialogJWindow、およびJApplet)は、それらが拡張するAWTクラスとの関連で示されています。 Swingライブラリ内の重量コンテナはこれら4つのコンポーネントのみです。 また、軽量コンテナのJInternalFrameも示されています。 これら5つのJFC/SwingコンテナはすべてRootPaneContainerインタフェースを実装し、処理をJRootPane (上部に小さな「ハンドル」が付いている)に委譲します。
ノート: JComponentのメソッドgetRootPaneを使用すると、指定されたコンポーネントを格納しているJRootPaneを取得できます。

例:

この図については次の文で説明しています。

右側の図はJRootPaneの構造を示しています。 JRootpaneは、glassPane、オプションのmenuBar、およびcontentPaneから成ります。 JLayeredPanemenuBarcontentPaneを管理します。 glassPaneはすべてのコンポーネントのいちばん上に置かれ、マウスの動作を捕捉します。 glassPaneは(contentPaneと同様に)、任意コンポーネントにすることができるので、描画のためにglassPaneをセット・アップすることもできます。 glassPane上の線とイメージは、境界に制限されることなく、下のフレーム全体を覆うことができます。

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

JRootPaneにコンポーネントを追加するには(オプションのメニュー・バーと異なり)、次のようにJRootPanecontentPaneにオブジェクトを追加します。

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

layeredPaneJRootPaneのすべての子の親(メニューの直接の親、およびcontentPaneに追加されたすべてのコンポーネントの親の両方)です。 layeredPaneは、複数のレイヤーでコンポーネントを追加する機能を提供するJLayeredPaneのインスタンスです。 この機能は、メニュー・ポップアップやダイアログ・ボックスでの作業およびドラッグなど、コンポーネントをペイン内のほかのすべてのコンポーネントのいちばん上に配置する必要がある場合にとても便利です。

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

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

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

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

Swingのペイント・アーキテクチャでは、不透明なJComponentが包含関係の階層の中でほかのすべてのコンポーネントの上に存在する必要があります。 通常、これはコンテンツ・ペインによって提供されます。 コンテンツ・ペインを置き換える場合は、setOpaque(true)によってコンテンツ・ペインを不透明にすることをお薦めします。 また、コンテンツ・ペインによってpaintComponentがオーバーライドされる場合は、バックグラウンドをpaintComponentの不透明な色で完全に塗りつぶす必要があります。

警告: Swingはスレッドに対して安全ではありません。 詳細は、「Swing's Threading Policy」を参照してください。

警告: このクラスの直列化されたオブジェクトは、今後のSwingリリースと互換ではなくなる予定です。 現在の直列化のサポートは、短期間の格納や、同じバージョンのSwingを実行するアプリケーション間のRMIに適しています。 1.4以降、すべてのJavaBeans™用の長期間の格納サポートがjava.beansパッケージに追加されています。 XMLEncoderを参照してください。

導入されたバージョン:
1.2
関連項目:
JLayeredPane, JMenuBar, JWindow, JFrame, JDialog, JApplet, JInternalFrame, JComponent, BoxLayout, Mixing Heavy and Light Components
  • フィールド詳細

    • NONE

      public static final int NONE
      windowDecorationStyleプロパティに使用する定数です。 JRootPaneがどんなWindow装飾も提供しないように指示します。
      導入されたバージョン:
      1.4
      関連項目:
      定数フィールド値
    • FRAME

      public static final int FRAME
      windowDecorationStyleプロパティに使用する定数です。 JRootPaneがFrameに適した装飾を提供するように指示します。
      導入されたバージョン:
      1.4
      関連項目:
      定数フィールド値
    • PLAIN_DIALOG

      public static final int PLAIN_DIALOG
      windowDecorationStyleプロパティに使用する定数です。 JRootPaneがDialogに適した装飾を提供するように指示します。
      導入されたバージョン:
      1.4
      関連項目:
      定数フィールド値
    • INFORMATION_DIALOG

      public static final int INFORMATION_DIALOG
      windowDecorationStyleプロパティに使用する定数です。 JRootPaneが、情報メッセージを表示するためのDialogに適した装飾を提供するように指示します。
      導入されたバージョン:
      1.4
      関連項目:
      定数フィールド値
    • ERROR_DIALOG

      public static final int ERROR_DIALOG
      windowDecorationStyleプロパティに使用する定数です。 JRootPaneが、エラー・メッセージを表示するためのDialogに適した装飾を提供するように指示します。
      導入されたバージョン:
      1.4
      関連項目:
      定数フィールド値
    • COLOR_CHOOSER_DIALOG

      public static final int COLOR_CHOOSER_DIALOG
      windowDecorationStyleプロパティに使用する定数です。 JRootPaneが、JColorChooserを表示するためのDialogに適した装飾を提供するように指示します。
      導入されたバージョン:
      1.4
      関連項目:
      定数フィールド値
    • FILE_CHOOSER_DIALOG

      public static final int FILE_CHOOSER_DIALOG
      windowDecorationStyleプロパティに使用する定数です。 JRootPaneが、JFileChooserを表示するためのDialogに適した装飾を提供するように指示します。
      導入されたバージョン:
      1.4
      関連項目:
      定数フィールド値
    • QUESTION_DIALOG

      public static final int QUESTION_DIALOG
      windowDecorationStyleプロパティに使用する定数です。 JRootPaneが、ユーザーにクエスチョンを表示するためのDialogに適した装飾を提供するように指示します。
      導入されたバージョン:
      1.4
      関連項目:
      定数フィールド値
    • WARNING_DIALOG

      public static final int WARNING_DIALOG
      windowDecorationStyleプロパティに使用する定数です。 JRootPaneが、警告メッセージを表示するためのDialogに適切な装飾を提供するように指示します。
      導入されたバージョン:
      1.4
      関連項目:
      定数フィールド値
    • menuBar

      protected JMenuBar menuBar
      メニュー・バーです。
    • contentPane

      protected Container contentPane
      コンテンツ・ペインです。
    • layeredPane

      protected JLayeredPane layeredPane
      メニュー・バーとコンテンツ・ペインを管理する階層化ペインです。
    • glassPane

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

      protected JButton defaultButton
      ペインがフォーカスを持つとき、およびEnterキーを押すなどのUI固有のアクションを持つときにアクティブになるボタンです。
  • コンストラクタの詳細

    • JRootPane

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

    • setDoubleBuffered

      public void setDoubleBuffered​(boolean aFlag)
      このコンポーネントがバッファを使用してペイントするかどうかを設定します。 trueに設定されている場合、このコンポーネントからのすべての描画はオフスクリーン描画バッファで行われます。 それからオフスクリーン描画バッファが画面にコピーされます。 Componentがバッファリングされており、その上位オブジェクトもバッファリングされている場合、上位オブジェクトのバッファが使用されます。
      オーバーライド:
      setDoubleBuffered 、クラス:  JComponent
      パラメータ:
      aFlag - trueの場合、このコンポーネントでダブル・バッファを使用するように設定
      導入されたバージョン:
      1.6
    • getWindowDecorationStyle

      public int getWindowDecorationStyle()
      JRootPaneが提供するウィンドウ装飾のタイプを識別する定数を返します。
      戻り値:
      NONEFRAMEPLAIN_DIALOGINFORMATION_DIALOGERROR_DIALOGCOLOR_CHOOSER_DIALOGFILE_CHOOSER_DIALOGQUESTION_DIALOG、またはWARNING_DIALOGのいずれか。
      導入されたバージョン:
      1.4
      関連項目:
      setWindowDecorationStyle(int)
    • setWindowDecorationStyle

      @BeanProperty(expert=true, visualUpdate=true, enumerationValues={"JRootPane.NONE","JRootPane.FRAME","JRootPane.PLAIN_DIALOG","JRootPane.INFORMATION_DIALOG","JRootPane.ERROR_DIALOG","JRootPane.COLOR_CHOOSER_DIALOG","JRootPane.FILE_CHOOSER_DIALOG","JRootPane.QUESTION_DIALOG","JRootPane.WARNING_DIALOG"}, description="Identifies the type of Window decorations to provide")public void setWindowDecorationStyle​(int windowDecorationStyle)
      JRootPaneが提供するウィンドウ装飾の種類(ボーダー、Windowを閉じるためのウィジェット、タイトルなど)を設定します。 デフォルトの設定はWindow装飾なし(NONE)です。

      これはヒントに過ぎず、一部のルック・アンド・フィールはこれをサポートしていません。 これはバウンド・プロパティです。

      パラメータ:
      windowDecorationStyle - 提供するウィンドウの装飾を識別する定数。
      例外:
      IllegalArgumentException - styleNONEFRAMEPLAIN_DIALOGINFORMATION_DIALOGERROR_DIALOGCOLOR_CHOOSER_DIALOGFILE_CHOOSER_DIALOGQUESTION_DIALOG、またはWARNING_DIALOGのいずれでもない場合。
      導入されたバージョン:
      1.4
      関連項目:
      JDialog.setDefaultLookAndFeelDecorated(boolean), JFrame.setDefaultLookAndFeelDecorated(boolean), LookAndFeel.getSupportsWindowDecorations()
    • getUI

      public RootPaneUI getUI()
      このコンポーネントをレンダリングするL&Fオブジェクトを返します。
      オーバーライド:
      クラスJComponentgetUI
      戻り値:
      LabelUIオブジェクト
      導入されたバージョン:
      1.3
    • setUI

      @BeanProperty(expert=true, hidden=true, visualUpdate=true, description="The UI object that implements the Component\'s LookAndFeel.")public void setUI​(RootPaneUI ui)
      このコンポーネントをレンダリングするL&Fオブジェクトを設定します。
      パラメータ:
      ui - LabelUI L&Fオブジェクト
      導入されたバージョン:
      1.3
      関連項目:
      UIDefaults.getUI(javax.swing.JComponent)
    • updateUI

      public void updateUI()
      現在のルック・アンド・フィールからの値にUIプロパティをリセットします。
      オーバーライド:
      updateUI 、クラス:  JComponent
      関連項目:
      JComponent.updateUI()
    • getUIClassID

      public String getUIClassID()
      このコンポーネントをレンダリングするL&Fクラスの名前を指定する文字列を返します。
      オーバーライド:
      getUIClassID 、クラス:  JComponent
      戻り値:
      文字列「RootPaneUI」
      関連項目:
      JComponent.getUIClassID(), UIDefaults.getUI(javax.swing.JComponent)
    • createLayeredPane

      protected JLayeredPane createLayeredPane()
      デフォルトのlayeredPaneを作成するために、コンストラクタ・メソッドから呼び出されます。 デフォルトでは、新しいJLayeredPaneを作成します。
      戻り値:
      デフォルトのlayeredPane
    • createContentPane

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

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

      protected LayoutManager createRootLayout()
      デフォルトのlayoutManagerを作成するために、コンストラクタ・メソッドから呼び出されます。
      戻り値:
      デフォルトのlayoutManager
    • setJMenuBar

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

      @Deprecatedpublic void setMenuBar​(JMenuBar menu)
      Deprecated.
      Swing version 1.0.3以降は、setJMenuBar(JMenuBar menu)に置き換えられています。
      メニュー・バーの値を指定します。
      パラメータ:
      menu - 追加するJMenuBar
    • getJMenuBar

      public JMenuBar getJMenuBar()
      階層化ペインからメニュー・バーを返します。
      戻り値:
      ペインで使用されるJMenuBar
    • getMenuBar

      @Deprecated public JMenuBar getMenuBar()
      Deprecated.
      Swing version 1.0.3以降は、getJMenuBar()に置き換えられています。
      メニュー・バーの値を返します。
      戻り値:
      ペインで使用されるJMenuBar
    • setContentPane

      public void setContentPane​(Container content)
      ルート・ペインが親になるコンポーネントを保持するコンテナである、コンテンツ・ペインを設定します。

      Swingのペイント・アーキテクチャでは、包含関係の階層に不透明なJComponentが含まれている必要があります。 通常、これはコンテンツ・ペインによって提供されます。 コンテンツ・ペインを置き換える場合は、不透明なJComponentと置き換えることをお勧めします。

      パラメータ:
      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がこのルート・ペインのガラス・ペインになるように設定します。 ルート・ペインが入力イベントを捕捉する必要があるときには必ず可視にされるので、通常、ガラス・ペインは軽量の透明なコンポーネントである必要があります。

      新しいガラス・ペインの可視設定は、現在のガラス・ペインの可視設定に一致するように変更されます。 このため、ガラス・ペインを置き換えて可視にするときは、注意が必要です。 次のいずれかの方法を使用します。

         root.setGlassPane(newGlassPane);
         newGlassPane.setVisible(true);
       
      または
         root.getGlassPane().setVisible(true);
         root.setGlassPane(newGlassPane);
       

      パラメータ:
      glass - このJRootPaneのガラス・ペインとして使用するComponent
      例外:
      NullPointerException - glassパラメータがnullの場合
    • getGlassPane

      public Component getGlassPane()
      このJRootPaneの現在のガラス・ペインを返します。
      戻り値:
      現在のガラス・ペイン
      関連項目:
      setGlassPane(java.awt.Component)
    • isValidateRoot

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

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

      オーバーライド:
      isValidateRoot 、クラス:  JComponent
      戻り値:
      true
      関連項目:
      JComponent.isValidateRoot(), Container.isValidateRoot()
    • isOptimizedDrawingEnabled

      public boolean isOptimizedDrawingEnabled()
      glassPanecontentPaneは同じ境界を持つため、JRootPaneはその子をタイリングせず、falseを返します。 一方、通常glassPaneは不可視なので、glassPaneが可視でない場合、trueを返します。 つまり、このメソッドの戻り値はglassPaneの可視性によって異なります。
      オーバーライド:
      isOptimizedDrawingEnabled 、クラス:  JComponent
      戻り値:
      このコンポーネントの子がオーバーラップしない場合はtrue
    • setDefaultButton

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

      public JButton getDefaultButton()
      defaultButtonプロパティの値を返します。
      戻り値:
      現在デフォルト・ボタンであるJButton
      関連項目:
      setDefaultButton(javax.swing.JButton)
    • addImpl

      protected void addImpl​(Component comp, Object constraints, int index)
      ガラス・コンポーネントの位置を子0として適用するためにオーバーライドされます。
      オーバーライド:
      addImpl、クラス: Container
      パラメータ:
      comp - 拡張されるコンポーネント
      constraints - 遵守されるべき制約
      index - インデックス
      関連項目:
      Container.add(Component), Container.add(Component, int), Container.add(Component, java.lang.Object), Container.invalidate(), LayoutManager, LayoutManager2
    • paramString

      protected String paramString()
      このJRootPaneの文字列表現を返します。 このメソッドはデバッグ専用であり、返される文字列の内容および形式は実装によって異なる可能性があります。 返される文字列は空でもかまいませんが、nullにはできません。
      オーバーライド:
      paramString 、クラス:  JComponent
      戻り値:
      このJRootPaneを表す文字列表現。
    • getAccessibleContext

      public AccessibleContext getAccessibleContext()
      このJRootPaneに関連付けられているAccessibleContextを取得します。 ルート・ペインの場合、AccessibleContextAccessibleJRootPaneの形式を取ります。 必要に応じて、新しいAccessibleJRootPaneインスタンスが作成されます。
      定義:
      getAccessibleContext、インタフェース: Accessible
      オーバーライド:
      getAccessibleContext、クラス: Component
      戻り値:
      このJRootPaneAccessibleContextとして機能するAccessibleJRootPane