我想知道在調用主應用程序的init
方法之前顯示dialog(Stage)
的最佳方式。我不能在init方法中實現它,因爲它不能在JavaFX應用程序線程上運行,並且在啓動方法中實現它時,我將失去一個預加載器的選項(只有在初始化階段才存在,如果我理解它的話)正確)。javafx在init之前顯示對話框
它應該像eclipse中的工作區選擇器或lightroom中的目錄選擇器。
我能想到的解決方案是創建兩個程序,一個啓動程序和主應用程序,但如果它可能發生在同一個應用程序中,我更喜歡它。如果只能這樣做,如何使用與啓動程序啓動相同的Java版本啓動主要app.jar?(由於命令行/終端允許用不同版本啓動應用程序,因此不能使用在路徑中配置的Java版本進行調用)。
感謝您的建議。
你爲什麼要這麼做? 'init()'方法是FX應用程序生命週期初始化的一部分:在完成之前,您幾乎不希望運行部分應用程序。爲什麼不像往常一樣在'start()'方法中顯示對話框,那麼在顯示主應用程序窗口之前,當對話框被解散時需要進行任何處理? –
@James_D我想這樣做,因爲代碼花費足夠的時間用於預加載器/啓動畫面發生在用戶選擇後,據我瞭解,預加載器生命週期是在'init()'方法期間,因此用戶可能在主應用程序Stage出現之前等待幾秒鐘,而不會看到進度條。這意味着我不需要預加載器並在「start()」方法中打開一個裝飾少對話框作爲進度指示啓動畫面,直到主舞臺可以顯示爲止? – Scourge
所以你可以使用preloader機制。儘管使用'start()'方法顯示帶有進度條的啓動畫面會更容易(imo),但是無論您在做什麼,都需要花費大量時間在後臺線程的任務中,並在完成後顯示主屏幕。 –