想做一个类似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 方法代替,应该已经跨平台了.