インターナルフレームのレイヤーの値を設定する

広告

インターナルフレームのレイヤーの値を設定する方法を確認します。なおレイヤーの値は大きいほどデスクトップペインの中で上位に表示されます。JInternalFrameクラスで用意されている「setLayer」メソッドを使います。

このコンポーネントのレイヤー属性を設定する簡易メソッドです。
setLayer(Integer) メソッドは、JLayeredPane で事前に定義されたレイヤー値
に使用する必要があります。setLayer(int) を使用する場合、それらの値とク
ラッシュしないように注意してください。 

パラメータ:
  layer - この内部フレームのデスクトップレイヤーを指定する整数

引数にインターナルフレームに設定したいレイヤーの値をint型の値で指定します。

実際の使い方は次のようになります。

JInternalFrame iframe = new JInternalFrame("title");
iframe.setLayer(1);

サンプルプログラム

では簡単なサンプルを作成して試してみます。

JDesktopPaneTest9.java

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 )

関連記事 (一部広告含む)