TITLE:JFrameを半透明化

Posted by terai at 2010-06-14

JFrameを半透明化

JFrameを半透明にします。

  • &jnlp;
  • &jar;
  • &zip;

#screenshot

サンプルコード

JFrame.setDefaultLookAndFeelDecorated(true);
JFrame frame = new JFrame("@title@");
com.sun.awt.AWTUtilities.setWindowOpaque(frame, false);
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
JPanel p = new JPanel();
p.add(new JButton("JButton"));
p.setBackground(new Color(.5f,.8f,.5f,.5f));
frame.getContentPane().add(p);
frame.setSize(320, 240);
frame.setLocationRelativeTo(null);
frame.setVisible(true);

解説

com.sun.awt.AWTUtilities.setWindowOpacity(frame, .5f);を使って半透明化すると、フレームのタイトルバーや、子コンポーネントまで半透明化されるので、代わりに上記のサンプルでは以下のようにして半透明化を行っています。

  • JFrame.setDefaultLookAndFeelDecorated(true);で、タイトルパーなどをJRootPaneに描画
  • com.sun.awt.AWTUtilities.setWindowOpaque(frame, false);でJFrameを完全に透明化
  • ContentPaneにsetBackground(new Color(.5f,.8f,.5f,.5f));で半透明の背景色を設定したパネルを追加

コメント