2011-11-22 151 views
2

我嘗試了swingx框架(http://swingx.java.net/)的演示。當你關閉主窗口時,你會有很好的消退效果。我試圖用JXFrame達到這個效果,但它只有正常的關閉效果。對JXFrame的SwingX淡入淡出效果?

任何人有想法?

回答

1

感謝:-)

它不涉及到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)是三叉戟,基里爾的項目,不幸被他拋棄,接管沒有實質的一個(沒有引用方便,不好意思)班 - 但你可以採取任何其他或手寫代碼一個定時器

+0

謝謝你,我試圖在我的代碼中實現,但錯過了一些類,如Timeline和UIThreadTImelineCallbackAdapter ...有沒有可能我錯過了一個庫? – Anthea