1

我想要做的是在我的程序加载某些内容时出现一个小的启动屏幕。这就是我所拥有的:

SplashScreen.showSplashScreen();
// Do stuff that takes time.
SplashScreen.hideSplashScreen();

showSplashScreen() 方法所做的只是在屏幕中间创建一个新的 JWindow 并使其可见。

现在这段代码是从事件调度线程调用的,所以当调用 showSplashScreen() 方法时,在线程完成之前我看不到 JWindow,到那时,我不再需要窗口了。在我等待时显示此启动画面的最佳方式是什么?

4

2 回答 2

4

不确定这是否是“最佳方式”,但我之前使用过的一种机制是在 EDT 以外的线程上进行初始化,但使用SwingUtilities.invokeAndWait. 这样,即使您的初始化很快(如果这是您想要发生的事情),您至少会看到启动屏幕。

所以在你的初始化线程上,你去:

SwingUtilities.invokeAndWait( /* Runnable to show splash screen */ );

// Do stuff that takes time.

SwingUtilities.invokeLater( /* Hide splash screen, display main GUI */ );
于 2010-10-08T09:20:32.033 回答
0

在 1.6 中引入了一个java.awt.SplashScreen类,尝试使用它吗?

于 2010-10-08T09:17:27.067 回答