作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我尝试了 swingx 框架 (http://swingx.java.net/) 的演示。当您关闭主窗口时,您会看到一个很好的淡入淡出效果。我试图用 JXFrame 达到这种效果,但它只有正常的关闭效果。
有人有想法吗?
最佳答案
谢谢:-)
它与 JXFrame 无关(可以用任何窗口完成),只是绑定(bind)到窗口的不透明度属性的时间轴。该时间线在应用程序窗口关闭时启动,相关代码在DemoUtils中。
public static void fadeOutAndDispose(final Window window,
int fadeOutDuration) {
fadeOutAndEnd(window, fadeOutDuration, false);
}
public static void fadeOutAndExit(Window window, int fadeOutDuration) {
fadeOutAndEnd(window, fadeOutDuration, true);
}
private static void fadeOutAndEnd(final Window window, int fadeOutDuration,
final boolean exit) {
Timeline dispose = new Timeline(new WindowFader(window));
dispose.addPropertyToInterpolate("opacity", 1.0f,
0.0f);
dispose.addCallback(new UIThreadTimelineCallbackAdapter() {
@Override
public void onTimelineStateChanged(TimelineState oldState,
TimelineState newState, float durationFraction,
float timelinePosition) {
if (newState == TimelineState.DONE) {
if (exit) {
Runtime.getRuntime().exit(0);
} else {
window.dispose();
}
}
}
});
dispose.setDuration(fadeOutDuration);
dispose.play();
}
public static class WindowFader {
private Window window;
public WindowFader(Window window) {
this.window = window;
}
public void setOpacity(float opacity) {
AWTUtilitiesWrapper.setWindowOpacity(window, opacity);
}
}
请注意,淡入淡出效果将不再适用于 jdk7 中的所有框架,因为行为已更改为仅影响未装饰的窗口
编辑
Timeline(和 callbackAdapter)是 Trident 中的类,这是 Kirill 的一个项目,不幸的是被他放弃了,被接管为 Insubstantial(手边没有引用,抱歉)——但你可以采用任何其他或手动编写 Timer
关于java - SwingX 对 JXFrame 的淡入淡出效果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8235411/
我是一名优秀的程序员,十分优秀!