まず最初に、私はJavaの同時実行パッケージをかなり最近使用していますが、私が立ち往生している問題を見つけました。欲しいのですが、アプリケーションとアプリケーションにはSplashScreen
、ステータスバーと他のデータの読み込みがあります。そこで、を使用することにしましたSwingUtilities.invokeAndWait( call the splash component here )
。次にSplashScreen
、が表示され、JProgressBar
スレッドのグループが実行されます。しかし、私は物事をうまく処理できないようです。私はこれを調べてSwingWorker
この目的で使用しようとしましたが、スレッドが戻ってきます。これが少しの擬似コードです。そして私が達成しようとしているポイント。
SplashScreen
情報の読み込み中に一時停止するアプリケーションがある- の下で複数のスレッドを実行できる
SplashScreen
- Update-ableのプログレスバーを
SplashScreen
用意しますが、すべてのスレッドが完了するまで終了しないでください。
スプラッシュ画面の起動
try {
SwingUtilities.invokeAndWait( SplashScreen );
} catch (InterruptedException e) {
} catch (InvocationTargetException e) { }
スプラッシュスクリーンの構築
SplashScreen extends JFrame implements Runnable{
public void run() {
//run threads
//while updating status bar
}
}
SwingWorkers
、CountDownLatchを使用したスレッドなど、さまざまなことを試しました。CountDownLatchは実際には処理を実行したい方法で機能しましたが、GUIを更新できませんでした。を使用すると、基本的に無効化されるSwingWorkers
かinvokeAndWait
(これが目的です)、を使用してもGUIが更新されませんPropertyChangedListener
。他の誰かがいくつかのアイデアを持っているなら、それを聞くのは素晴らしいことです。前もって感謝します。
私は実際に役立つコードを投稿する準備をして、自分の解決策を見つけました。助けてくれたすべての人に感謝します。