#navi(contents-page-name): No such page: ST

2022-02-01 (火) 22:41:27
  • category: swing folder: LayeredPane title: JInternalFrameを一番手前に表示 tags: [JLayeredPane, JInternalFrame, JDesktopPane] author: aterai pubdate: 2004-06-21T07:16:58+09:00 description: JLayeredPaneを使って、常に一番手前に表示されるJInternalFrameを作成します。 image: https://lh5.googleusercontent.com/_9Z4BYR88imo/TQTO8wLpaZI/AAAAAAAAAdM/mML3cGeQwrg/s800/LayeredPane.png

概要

JLayeredPaneを使って、常に一番手前に表示されるJInternalFrameを作成します。
http://terai.s55.xrea.com/swing/layeredpane/screenshot.png

サンプルコード

#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, Kotlin
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){}
}

解説

JDesktopPaneJLayeredPaneを継承しているため、JInternalFrameを追加するレイヤーを指定可能です。このサンプルでは、タイトルがAlwaysOnTopJInternalFrameJLayeredPane.MODAL_LAYERの一つ上に設定し、他のJInternalFrame(ここでは後から追加するJInternalFrame)より常に手前に表示されるように設定しています。

参考リンク

コメント