[英]Displaying JWindow in the event dispatching thread
我想要做的是在我的程序加載某些東西時出現一個小的啟動畫面。 這就是我所擁有的:
SplashScreen.showSplashScreen();
// Do stuff that takes time.
SplashScreen.hideSplashScreen();
所有showSplashScreen()方法都會在屏幕中間創建一個新的JWindow並使其可見。
現在這個代碼是從事件調度線程調用的,所以當調用showSplashScreen()方法時,我不會看到JWindow,直到線程完成,到那時,我不再需要窗口了。 在我等待的時候,展示這個閃屏的最佳方式是什么?
不確定這是否是“最佳方式”,但我之前使用過的機制是在EDT以外的線程上進行初始化,但是使用SwingUtilities.invokeAndWait
顯示你的啟動畫面。 這樣,即使你的初始化很快(至少你想要發生的事情),你至少也會看到啟動畫面。
所以在你的init線程上,你去:
SwingUtilities.invokeAndWait( /* Runnable to show splash screen */ );
// Do stuff that takes time.
SwingUtilities.invokeLater( /* Hide splash screen, display main GUI */ );
在1.6中引入了一個java.awt.SplashScreen
類,嘗試使用它?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.