インターナルフレームのレイヤーの値を取得する
広告
インターナルフレームがデスクトップペインの中で複数存在する場合にどのインターナルフレームが上位に表示されるかはレイヤーと呼ばれる値を使って管理しています。
まずインターナルフレームが作成された時点でレイヤーの値を取得してみます。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 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。