当前位置: 代码迷 >> J2SE >> 请教大神,用Swing怎么实现窗口背景颜色渐渐变淡,直到窗口消失
  详细解决方案

请教大神,用Swing怎么实现窗口背景颜色渐渐变淡,直到窗口消失

热度:1813   发布时间:2013-02-25 00:00:00.0
请问大神,用Swing如何实现窗口背景颜色渐渐变淡,直到窗口消失?
想做一个类似QQ收到公告消息时弹出窗口的效果一样,窗口的背景色会渐渐变淡,直道消失为止。请问这个效果用Swing能做到吗?怎么做啊?

------解决方案--------------------------------------------------------
你主贴说的是变色,现在要求是透明,这个难度可是不一样啊。

给你段代码参考吧:
Java code
import javax.swing.*;import com.sun.awt.AWTUtilities;public class JFrameFadeOut extends JFrame {    public JFrameFadeOut() {        this.setSize(400, 300);        this.setDefaultCloseOperation(EXIT_ON_CLOSE);    }    public static void main(String[] args) {        JFrameFadeOut wnd = new JFrameFadeOut();        wnd.setVisible(true);        new FadeOut(wnd).start();    }    static class FadeOut extends Thread {        private JFrameFadeOut wnd;        public FadeOut(JFrameFadeOut wnd) {            this.wnd = wnd;        }        public void run() {            try {                for (int i = 100; i > 0; i--) {                    Thread.sleep(100);                    AWTUtilities.setWindowOpacity(wnd, i / 100f);                }            } catch (Exception ex) {                ex.printStackTrace();            }            wnd.setVisible(false);        }    }}
------解决方案--------------------------------------------------------
窗口渐淡这种效果,貌似要使用操作系统特定的API,在J2SE1.4, 1.5是不支持的。
AWTUtilities 这个类在com.sun.awt包中,官方不保证其向后兼容,不保证跨平台性,不保证稳定性.
J2SE 1.7 中透明效果已经被 Frame 的 setOpacity 方法代替,应该已经跨平台了.