インターナルフレームのレイヤーの値を取得する
広告
インターナルフレームがデスクトップペインの中で複数存在する場合にどのインターナルフレームが上位に表示されるかはレイヤーと呼ばれる値を使って管理しています。
まずインターナルフレームが作成された時点でレイヤーの値を取得してみます。JInternalFrameクラスで用意されている「getLayer」メソッドを使います。
public int getLayer()
このコンポーネントのレイヤー属性を取得する簡易メソッドです。 戻り値: このフレームのデスクトップレイヤーを指定する Integer オブジェクト
戻り値としてインターナルフレームに設定されているレイヤーの値を表すint型の値を取得できます。
実際の使い方は次のようになります。
JInternalFrame iframe = new JInternalFrame("title");
int layer = iframe.getLayer();
サンプルプログラム
では簡単なサンプルを作成して試してみます。
import javax.swing.*;
import java.awt.BorderLayout;
public class JDesktopPaneTest8 extends JFrame{
public static void main(String[] args){
JDesktopPaneTest8 frame = new JDesktopPaneTest8();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setBounds(10, 10, 300, 200);
frame.setTitle("タイトル");
frame.setVisible(true);
}
JDesktopPaneTest8(){
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(30, 30);
iframe2.setVisible(true);
int layer2 = iframe2.getLayer();
iframe2.setTitle("IFrame2[" + layer2 + "]");
desktop.add(iframe1);
desktop.add(iframe2);
getContentPane().add(desktop, BorderLayout.CENTER);
}
}
上記をコンパイルした後で実行すると次のように表示されます。
フレームにタイトルの括弧([])の中にレイヤーの値を表示しています。特に設定していない場合はレイヤーは「0」となります。2番目のインターナルフレームをクリックしてみても同じように表示されます。
またレイヤーの値が同じ場合には、フレームをクリックして選択状態にすると同じレイヤーが設定されたフレームの中で最前面に表示されます。
( Written by Tatsuo Ikura )
著者 / TATSUO IKURA
これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。