Swing/LayeredPane のバックアップの現在との差分(No.4)
#navi(contents-page-name): No such page: ST
2022-02-01 (火) 22:41:27
概要
JLayeredPane
を使って、常に一番手前に表示されるJInternalFrame
を作成します。
Screenshot
Advertisement
サンプルコード
#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
#spanadd
View in GitHub: Java, Kotlinboolean 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){} }
解説
JDesktopPane
はJLayeredPane
を継承しているため、JInternalFrame
を追加するレイヤーを指定可能です。このサンプルでは、タイトルがAlwaysOnTop
のJInternalFrame
をJLayeredPane.MODAL_LAYER
の一つ上に設定し、他のJInternalFrame
(ここでは後から追加するJInternalFrame
)より常に手前に表示されるように設定しています。
参考リンク
コメント
-
JDK 1.5.0
でJFrame
などは、frame.setAlwaysOnTop(true)
が使えるようになっています。 -- aterai - ありがとうございます。現在
GUI
の作成をしていて、目下この情報を探していました。ありがとうございました -- G- どういたしまして。 -- aterai