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