Swing/LayeredPane のバックアップの現在との差分(No.12)
TITLE:JInternalFrameを一番手前に表示
JInternalFrameを一番手前に表示
編集者:Terai Atsuhiro~
作成日:2004-06-21
更新日:2022-02-01 (火) 22:41:27
概要
JLayeredPane
を使って、常に一番手前に表示されるJInternalFrame
を作成します。
Screenshot
Advertisement
概要
JLayeredPaneを使って、常に一番手前に表示されるJInternalFrameを作成します。#screenshot
サンプルコード
#spanend
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) {}
}
#spanadd
* サンプルコード [#sourcecode]
#spanend
#spanadd
#code(link){{
#spanend
#spanadd
JInternalFrame iframe = new JInternalFrame(
#spanend
"AlwaysOnTop", // title
true, // resizable
false, // closable
true, // maximizable
true); // iconifiable
#spanadd
iframe.setSize(180, 180);
#spanend
#spanadd
desktop.add(iframe, Integer.valueOf(JLayeredPane.MODAL_LAYER + 1));
#spanend
#spanadd
iframe.setVisible(true);
#spanend
- &jnlp;
- &jar;
- &zip;
解説
上記のサンプルでは、一番最初に作成したフレームがJLayeredPane.DEFAULT_LAYERより一つ上のレイヤーに追加されているため、後から追加されたフレームは、これより手前に表示することが出来なくなっています。解説
JDesktopPane
はJLayeredPane
を継承しているため、JInternalFrame
を追加するレイヤーを指定可能です。このサンプルでは、タイトルがAlwaysOnTop
のJInternalFrame
をJLayeredPane.MODAL_LAYER
の一つ上に設定し、他のJInternalFrame
(ここでは後から追加するJInternalFrame
)より常に手前に表示されるように設定しています。
参考リンク
参考リンク
コメント
- 1.5でJFrameなどは、frame.setAlwaysOnTop(true)が使えるようになっています。 -- terai
- ありがとうございます。現在GUIの作成をしていて、目下この情報を探していました。ありがとうございました -- G?
コメント
-
JDK 1.5.0
でJFrame
などは、frame.setAlwaysOnTop(true)
が使えるようになっています。 -- aterai - ありがとうございます。現在
GUI
の作成をしていて、目下この情報を探していました。ありがとうございました -- G- どういたしまして。 -- aterai