- Home ›
- Swing ›
- JDesktopPaneクラス ›
- HERE
インターナルフレームのレイヤーの値を設定する
インターナルフレームのレイヤーの値を設定する方法を確認します。なおレイヤーの値は大きいほどデスクトップペインの中で上位に表示されます。JInternalFrameクラスで用意されている「setLayer」メソッドを使います。
setLayer public void setLayer(int layer)
このコンポーネントのレイヤー属性を設定する簡易メソッドです。 setLayer(Integer) メソッドは、JLayeredPane で事前に定義されたレイヤー値 に使用する必要があります。setLayer(int) を使用する場合、それらの値とク ラッシュしないように注意してください。 パラメータ: layer - この内部フレームのデスクトップレイヤーを指定する整数
引数にインターナルフレームに設定したいレイヤーの値をint型の値で指定します。
実際の使い方は次のようになります。
JInternalFrame iframe = new JInternalFrame("title");
iframe.setLayer(1);
サンプルプログラム
では簡単なサンプルを作成して試してみます。
import javax.swing.*;
import java.awt.BorderLayout;
public class JDesktopPaneTest9 extends JFrame{
public static void main(String[] args){
JDesktopPaneTest9 frame = new JDesktopPaneTest9();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setBounds(10, 10, 400, 300);
frame.setTitle("タイトル");
frame.setVisible(true);
}
JDesktopPaneTest9(){
JDesktopPane desktop = new JDesktopPane();
JInternalFrame iframe1 = new JInternalFrame();
iframe1.setSize(250, 120);
iframe1.setLocation(10, 10);
iframe1.setVisible(true);
int layer1 = iframe1.getLayer();
iframe1.setTitle("IFrame1[" + layer1 + "]");
JInternalFrame iframe2 = new JInternalFrame();
iframe2.setSize(250, 120);
iframe2.setLocation(20, 80);
iframe2.setVisible(true);
int layer2 = iframe2.getLayer();
iframe2.setTitle("IFrame1[" + layer2 + "]");
JInternalFrame iframe3 = new JInternalFrame();
iframe3.setSize(250, 120);
iframe3.setLocation(100, 50);
iframe3.setVisible(true);
iframe3.setLayer(1);
int layer3 = iframe3.getLayer();
iframe3.setTitle("IFrame1[" + layer3 + "]");
desktop.add(iframe1);
desktop.add(iframe2);
desktop.add(iframe3);
getContentPane().add(desktop, BorderLayout.CENTER);
}
}
上記をコンパイルした後で実行すると次のように表示されます。
今回は3番目のインターナルフレームにだけレイヤーとして「1」を設定しています。他の2つのレイヤーはデフォルトのままですので「0」となっています。この為、レイヤーの値が一番大きい3番目のインターナルフレームが最前面に表示されています。
ではレイヤーが「0」の1番目のインターナルフレームをクリックして下さい。
クリックされたインターナルフレームが選択状態になりましたが最前面には表示されません。このようにインターナルフレームは選択状態に有る無しに関わらずレイヤーが上位のインターナルフレームが前面に表示されます。
ではレイヤーが同じく「0」の2番目のインターナルフレームをクリックして下さい。
この時、同じレイヤーの値を持つ1番目のインターナルフレームよりは前面に表示されますが、レイヤーの値が大きい3番目のインターナルフレームよりは後ろに表示されます。
( Written by Tatsuo Ikura )
JavaDrive