1

私はJButtonを持っており、それをクリックすると、データベースからいくつかのデータをロードし、多くのコントロールを持つJDialogを初期化し、ロードされたデータでそれらのコントロールを埋めてから、遅いJDialogを表示します。これは、最終的にJDialogを表示するのに約3〜5秒かかります。これにより、プログラムがひどくフリーズします。

SwingXのJXBusyLabelを使用して小さなJDialogを作成し、このような遅いプロセスの読み込みと初期化中にビジーなラベルを表示しました。しかし、遅いダイアログを初期化しながら、EDTでこのビジーラベルJDialogを実行するにはどうすればよいですか?

注:データベースからのデータのロードは遅くありませんが、重いJDialogとそのコンポーネントを初期化すると、処理が遅くなります。

4

2 に答える 2

5
  1. ビジーダイアログを表示します。

  2. SwingWorkerを起動し、バックグラウンド(データベース)ですべての長時間実行タスクを実行します

  3. 完了したら、データベースのデータを使用して大きなダイアログを作成します(SwingWorker.done(メソッド)内)

  4. ビジーダイアログを非表示にし、大きなダイアログを表示します。

于 2011-05-03T13:18:23.783 に答える
0

SwingWorkerを使用する方がよいでしょう:

  1. ビジーラベルでダイアログを作成し、SwingWorkerを作成します
  2. スイングワーカーを起動します(DBからデータを非同期的にロードし、メインダイアログのコントロールを準備します)
  3. SwingWorkerのdone()メソッドで、最初の小さなダイアログを非表示にし、メインのダイアログを表示します
于 2011-05-03T13:21:43.813 に答える