インターナルフレームのレイヤーの値を設定する
インターナルフレームのレイヤーの値を設定する方法を確認します。なおレイヤーの値は大きいほどデスクトップペインの中で上位に表示されます。JInternalFrameクラスで用意されている「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 )
著者 / TATSUO IKURA
これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。