インターナルフレームのレイヤーの値を取得する

広告

インターナルフレームがデスクトップペインの中で複数存在する場合にどのインターナルフレームが上位に表示されるかはレイヤーと呼ばれる値を使って管理しています。

まずインターナルフレームが作成された時点でレイヤーの値を取得してみます。JInternalFrameクラスで用意されている「getLayer」メソッドを使います。

このコンポーネントのレイヤー属性を取得する簡易メソッドです。

戻り値:
  このフレームのデスクトップレイヤーを指定する Integer オブジェクト

戻り値としてインターナルフレームに設定されているレイヤーの値を表すint型の値を取得出来ます。

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

JInternalFrame iframe = new JInternalFrame("title");
int layer = iframe.getLayer();

サンプルプログラム

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

JDesktopPaneTest8.java

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 )

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