JInternalFrameを一番手前に表示

編集者:Terai Atsuhiro
作成日:2004-06-21
更新日:2022-02-01 (火) 22:41:27

概要

JLayeredPaneを使って、常に一番手前に表示されるJInternalFrameを作成します。

http://terai.xrea.jp/swing/layeredpane/screenshot.png

サンプルコード

boolean flag = true;
protected void createFrame() {
  MyInternalFrame frame = new MyInternalFrame();
  frame.setVisible(true);
  if(flag) {
    desktop.add(frame, new Integer(JLayeredPane.DEFAULT_LAYER.intValue()+1));
    flag = false;
  }else{
    desktop.add(frame);
  }
  try{
    frame.setSelected(true);
  }catch(java.beans.PropertyVetoException e) {}
}

解説

上記のサンプルでは、その他のフレームをメニューから追加しても、一番最初に作成したフレームがJLayeredPane.DEFAULT_LAYERより一つ上のレイヤーに追加されているため、これより手前に表示することができません。

コメント

  • 1.5でJFrameなどは、frame.setAlwaysOnTop(true)が使えるようになっています。 -- terai
  • ありがとうございます。現在GUIの作成をしていて、目下この情報を探していました。ありがとうございました -- G