Влияние SwingX на JXFrame? - PullRequest
       0

Влияние SwingX на JXFrame?

2 голосов
/ 23 ноября 2011

Я попробовал демонстрацию фреймворка swingx (http://swingx.java.net/). Когда вы закрываете главное окно, вы получаете отличный эффект затухания. Я пытался достичь этого эффекта с помощью JXFrame, но он имеет только обычный эффект закрытия.

У кого-нибудь есть идея?

1 Ответ

1 голос
/ 23 ноября 2011

спасибо: -)

Это не связано с JXFrame (может быть сделано с любым окном), просто временная шкала, привязанная к свойству непрозрачности окна.Эта временная шкала запускается, когда окно приложения закрывается, соответствующий код находится в 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, так как поведениебыл изменен, чтобы воздействовать только на неокрашенные окна

Редактировать

Временная шкала (и callbackAdapter) - это классы в Trident, одном из проектов Кирилла, к сожалению, оставленном им, принятым заНесущественно (справка не нужна, извините) - но вы можете взять любой другой или вручную код таймера

...