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

クラスJLayeredPane

java.lang.Object
すべての実装されたインタフェース:
ImageObserver, MenuContainer, Serializable, Accessible
直系の既知のサブクラス:
JDesktopPane

@JavaBean(defaultProperty="accessibleContext") 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オブジェクトとまったく同じように管理されますが、子コンポーネントどうしがオーバーラップした場合には、上位のレイヤーのコンポーネントの方が下位レイヤーのコンポーネントより上に表示されます。

各レイヤーには個別の整数値が割り当てられます。 Componentのレイヤー属性を設定するには、add呼出しでIntegerオブジェクトを渡します。
たとえば:

     layeredPane.add(child, JLayeredPane.DEFAULT_LAYER);
 or
     layeredPane.add(child, Integer.valueOf(10));
 
Componentのレイヤー属性を設定するには、
     layeredPaneParent.setLayer(child, 10)
をコンポーネントの親であるJLayeredPane上で呼び出すこともできます。 レイヤーは、子を親に追加する前に設定する必要があります。

番号が大きいレイヤーほど上に表示されます。 したがって、次のように各コンポーネントに個別のレイヤー番号と文字を割り当てることにより、

       5a, 5b, 5c, 2a, 2b, 2c, 1a 
左のコンポーネントほど上に表示されます。

コンポーネントをレイヤー内でいちばん上またはいちばん下に移動させるには、moveToFrontまたはmoveToBackを呼び出します。

レイヤー内でのコンポーネントの位置を位置番号で指定することもできます。 指定できる位置番号は、0から「レイヤー内のコンポーネント数 - 1」です。 -1を指定すると、コンポーネントはいちばん下に表示されます。 0を指定すると、コンポーネントはいちばん上に表示されます。 レイヤー番号とは異なり、値が大きいほど下に表示されます。

ノート: この順序(java.awt.Containerで定義されている)は、レイヤー番号の順序の反対になっています。 通常は、moveToFrontmoveToBack、およびsetLayerを使用します。
add(Component, layer, position)メソッドの使用例を示します。add(5x, 5, -1)呼出しの結果は次のとおりです。
       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がいちばん上に表示されます。

ノート: これらのレイヤーは単に論理的な構造であり、LayoutManagerは、レイヤー設定には関係なく、このコンテナのすべての子コンポーネントに影響します。

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

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

導入されたバージョン:
1.2