這是一個很長的答案,急躁的快速答案是下載這個sample code for displaying a splash page for an intensive startup task,看看它是否適合您的情況。
我的回答提供了關於JavaFX中Preloader樣式功能的一般信息。你的問題在Eclipse和OSGI環境中特別提到了Preloader
的用法,但我不會直接解決這種情況,因爲我不使用這些技術。希望一般信息仍適用於您的情況。
1.當啓動Java時,Java對本機支持顯示啓動頁面。
優缺點:
+
讓你獨立的應用程序來顯示閃現圖像的最簡單方法。
+
可以非常快速地顯示 =>它是虛擬機進程的參數輸入,所以(大概)它可以在虛擬機本身完全初始化之前顯示。
-
具有有限的功能 =>只允許顯示圖像,而不是其他的預加載功能,如初始化進度,動畫報告,登錄提示等(除非你make use of AWT APIs)
-
將無法在所有工作平臺直到Java 8(請參閱問題Mac: Impossible to use -splash: with JavaFX 2.2 and JDK 7)。
2.預加載器可用於獨立應用程序。
JavaFX Preloader tutorial在章節9.3.4 Using a Preloader to Display the Application Initialization Progress
中有一個示例。本教程提供了LongInitAppPreloader
和LongInitApp
類中的可執行示例代碼(使用我在此答案中提供的類名稱,因爲本教程中的一個名稱目前是錯誤的)。
示例獨立應用程序具有較長的初始化時間,並且自定義Preloader
提供了有關初始化進度的反饋。該示例通過調用Thread.sleep
調用Task來模擬長初始化,但真正的應用程序將執行類似於建立網絡連接,檢索和解析網絡數據以及設置初始應用程序Scene。
預加載器並不特定於小程序和WebStart,但主要針對這些部署類型。小應用程序和WebStart初始化過程比獨立應用程序初始化更爲複雜,因此Preloader文檔中的大部分專門用於更復雜的場景。
3.您不需要將Preloader放置在單獨的JAR中。
您可以將Preloader
放在與Application類相同的JAR中。對於通過網絡加載協議(如WebStart)動態部署和更新的大型應用程序,將Preloader
放置在單獨的JAR中是有道理的。對於執行基於網絡的初始化的獨立應用程序,它可能沒有多大區別,可以跳過單獨的打包步驟來簡化構建和部署過程。
4.您可以在不使用預加載器的情況下實現預加載器樣式功能。
預加載器功能的很多(不是全部)功能可以在沒有繼承Preloader的情況下實現。
您可以:
- 創建應用程序的方法start啓動Stage。
- 在啓動階段放置一個閃屏圖像和ProgressBar。
- 對於冗長的應用程序初始化過程,有一個背景task。
- 從後臺任務報告初始化進度到您的啓動階段。
- 在初始化完成時,要麼:
- a。 b。用新創建的應用程序階段替換啓動階段或
- b。將啓動階段的場景內容替換爲應用程序的新場景。
5B可能是首選,這樣你就不需要創建多個窗口。
對於這一戰略的例子,看到我的回答以下問題:
顯示進度監控閃屏JavaFX中不使用的相關示例代碼Preloader
是:
上面的代碼可以被重構爲使用預加載的子類,而不是,在這種情況下,存在用於應用程序的初始化事件和更靈活的部署模式通知良好限定的框架(例如preloader在單獨的罐子裏)可用。然而使用Preloader
可能有點複雜。對於某些實現,可能不值得花時間瞭解框架。
5. Webstart的應用程序有飛濺圖片
JNLP的支持(這一點是相當無關,只是爲了保持完整性)。
我相信webstart applications can have a flag in their jnlp file顯示啓動圖像作爲Webstart的應用程序啓動,但我從來沒有能夠獲得該標誌在一個JavaFX 2應用程序的工作,只有在一個Swing應用程序,即使這樣它不是所有這些都是可靠的,因爲它只會在應用程序第二次啓動時顯示。
有誰支持? – 2013-02-28 06:22:29