首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

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

2012-10-21 
请问大神,用Swing如何实现窗口背景颜色渐渐变淡,直到窗口消失?想做一个类似QQ收到公告消息时弹出窗口的效

请问大神,用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 方法代替,应该已经跨平台了.

热点排行
Bad Request.