レイヤペイン


コンポーネントの層

AWT ではコンポーネントが重なる場合 Z オーダーを保障していましたが
Swing では、この概念を発展させたレイヤペインを軽量コンテナとしてサポートしています
レイヤペインは javax.swing.JLayeredPane クラスで実装されます
java.lang.Object
  |
  +--java.awt.Component
        |
        +--java.awt.Container
              |
              +--javax.swing.JComponent
                    |
                    +--javax.swing.JLayeredPane

public class JLayeredPane 
	extends JComponent implements Accessible
このクラスはデフォルトコンストラクタのみを公開しています
レイヤペインは、コンポーネントの階層が重要なコンテナとして利用することができます
コンポーネントの関係は JLayeredPane.setLayer() メソッドで設定できます
もちろん、階層レベルを取得する JLayeredPane.getLayer() も存在します

public void setLayer(Component c , int layer)
public void setLayer(Component c , int layer , int position)
public int getLayer(Component c)

c にはレイヤーを設定するコンポーネントを、layer にはレイヤ属性を
position は、さらにレイヤ内の位置を指定することができます

例や属性や位置では、値が高いほど上、低いほど下の階層であると解釈されます
position においては、0 が最上部 -1 が最下部を表します
import java.awt.*;
import javax.swing.*;

public class Test extends JApplet {
	public void init() {
		JLayeredPane layerPane = new JLayeredPane();
		layerPane.setLayout(null);

		for(int i = 0 , x = 0 , y = 0 ; i < 5 ; i++ , x += 20 , y += 40) {
			JButton button = new JButton();
			int layer = (int)(Math.random() * (400));
			button.setText("レイヤ : " + layer);
			button.setBounds(x , y , 200 , 50);
			layerPane.add(button);
			layerPane.setLayer(button , layer);
		}

		setContentPane(layerPane);
	}
}


このプログラムは、ボタンをレイヤペインに追加しています
このとき、ボタンのレイヤーは乱数で決定し、setLayer() メソッドで指定します



前のページへ戻る次のページへ