【问题标题】:SwingX fading effect on JXFrame?SwingX 对 JXFrame 的褪色效果?
【发布时间】:2011-11-22 23:30:48
【问题描述】:

我尝试了 swingx 框架的演示 (http://swingx.java.net/)。当你关闭主窗口时,你有一个很好的淡入淡出效果。我试图用 JXFrame 达到这种效果,但它只有正常的关闭效果。

有人有想法吗?

【问题讨论】:

    标签: java swing swingx


    【解决方案1】:

    谢谢 :-)

    它与 JXFrame 无关(可以用任何窗口完成),只是绑定到窗口的 opacity 属性的时间线。这个时间线是在应用窗口关闭时启动的,相关代码在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

    【讨论】:

    • 谢谢,我尝试在我的代码中实现它,但错过了一些类,如 Timeline 和 UIThreadTImelineCallbackAdapter ... 是否有我想念的库?
    猜你喜欢
    • 2017-07-29
    • 1970-01-01
    • 1970-01-01
    • 2012-08-24
    • 1970-01-01
    • 1970-01-01
    • 2013-07-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多