TITLE:JInternalFrameを一番手前に表示
#navi(../)
#tags()
RIGHT:Posted by &author(aterai); at 2004-06-21
*JInternalFrameを一番手前に表示 [#nf40bd6e]
JLayeredPaneを使って、常に一番手前に表示されるJInternalFrameを作成します。

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

//#screenshot
#ref(http://lh5.ggpht.com/_9Z4BYR88imo/TQTO8wLpaZI/AAAAAAAAAdM/mML3cGeQwrg/s800/LayeredPane.png)

**サンプルコード [#m9667d72]
#code(link){{
JInternalFrame iframe = new JInternalFrame("AlwaysOnTop",
  true,  //resizable
  false, //closable
  true,  //maximizable
  true); //iconifiable
iframe.setSize(180, 180);
desktop.add(iframe, Integer.valueOf(JLayeredPane.MODAL_LAYER+1));
iframe.setVisible(true);
}}

**解説 [#b28fb803]
JDesktopPane は、JLayeredPane を継承しているので、JInternalFrame を追加するレイヤーを指定することができます。
このサンプルでは、タイトルが"AlwaysOnTop"のJInternalFrameを、JLayeredPane.MODAL_LAYERの一つ上に設定し、他のJInternalFrame(ここでは後から追加するJInternalFrame)より常に手前に表示されるように設定しています。
//上記のサンプルでは、一番最初に作成したフレームがJLayeredPane.DEFAULT_LAYERより一つ上のレイヤーに追加されているため、後から追加されたフレームは、これより手前に表示することが出来なくなっています。

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

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

#comment