日期:2014-05-20 浏览次数:20712 次
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 方法代替,应该已经跨平台了.