TITLE:JInternalFrameを一番手前に表示
#navi(../)
*JInternalFrameを一番手前に表示 [#nf40bd6e]
Posted by [[terai]] at 2004-06-21

#contents

**概要 [#e3d9376f]
JLayeredPaneを使って、常に一番手前に表示されるJInternalFrameを作成します。

-&jnlp;
-&jar;
-&zip;

#screenshot

**サンプルコード [#m9667d72]
#code{{
boolean isFirst = true;
protected void createFrame() {
  MyInternalFrame frame = new MyInternalFrame();
  frame.setVisible(true);
  if(isFirst) {
    desktop.add(frame, new Integer(JLayeredPane.DEFAULT_LAYER.intValue()+1));
    isFirst = false;
  }else{
    desktop.add(frame);
  }
  try{
    frame.setSelected(true);
  }catch(java.beans.PropertyVetoException e) {}
}
}}

**解説 [#b28fb803]
上記のサンプルでは、一番最初に作成したフレームがJLayeredPane.DEFAULT_LAYERより一つ上のレイヤーに追加されているため、後から追加されたフレームは、これより手前に表示することが出来なくなっています。

**参考リンク [#a60bf0d2]
-[[JInternalFrameは最初にアイコン化しておかないと位置が更新されない>http://d.hatena.ne.jp/tori31001/20060901]]
-- http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4110799

**コメント [#v1a558f1]
-1.5でJFrameなどは、frame.setAlwaysOnTop(true)が使えるようになっています。 -- [[terai]] &new{2004-10-08 (金) 17:00:59};
-ありがとうございます。現在GUIの作成をしていて、目下この情報を探していました。ありがとうございました -- [[G]] &new{2004-12-24 (金) 12:00:00};

#comment