読み込みに時間がかかるプログラムがあります。このため、何がロードされているかについてユーザーにフィードバックを提供できるスプラッシュ スクリーンを開発したいと考えました。画像、ラベル、JProgressBar を持つシンプルな JFrame。
私は実験してきましたが、これまでに得た最良の結果は、次のように実行していますmain()
。
SwingUtilities.invokeAndWait(new Runnable() {
public void run() {
new SplashScreen();
}
});
SwingUtilities.invokeAndWait(new Runnable() {
public void run() {
//Code to start system
new MainFrame();
//.. etc
}
});
SplashScreen と MainFrame はどちらも JFrame を拡張するクラスです。また、Substance をライブラリとして使用しています。
SplashScreen のコンストラクターは、JLabel と JProgressBar をそれ自体に追加し、パックして可視に設定します。JProgressBar は次のとおりですsetIndeterminate(true)
。
プログラムを実行すると、SplashScreen が表示されますが、ProgressBar はロックされており、プログラムの残りの部分が開始されるまで動かず、期待どおりに動き始めません。
ここで何が欠けていますか?私が行ったすべての検索では、この問題について言及されていないようであり、ほとんどの「カスタム スプラッシュ スクリーン」の実装は、私と非常によく似た方法で対処しています。