2

画面にダイアログが表示されているときにダイアログが表示されるのを防ぐにはどうすればよいですか?

詳細:私のアプリケーションでは、多くのタイマーが実行されています。致命的なエラーが発生した場合、影響を受けるすべてのスレッドがJDialogを表示します(swingx.JXErrorPane.showDialog()による)。これは望ましくありません。実行中のタイマーをすべてキャンセルしても、同時にいくつかのダイアログが表示されます。ダイアログが1つだけ表示されるようにするにはどうすればよいですか?

showDialog()を呼び出すメソッドを同期させようとしましたが、その結果、GUI全体がブロックされました。フラグの使用も機能しませんでした。

4

2 に答える 2

6

ダイアログをオブザーバーに変え、エラーイベントをこの新しいオブザーバーに公開します(オブザーバーデザインパターンを参照)。イベントが発生すると、ダイアログはそれ自体を表示する必要があります(メインフレームを親として)。ダイアログのテーブルに最近のエラーを表示します。そのテーブルの最後に新しいエラーを追加します。

もう1つのオプションは、メインフレームのテーブルにエラーを表示することです。テーブルをJSplitPaneに入れて、ユーザーがそれを最小化できるようにします。

于 2009-04-30T07:24:23.720 に答える
0

さらに別のオプションは、ダイアログをシングルトンに変えることです:

  • ダイアログにプライベート コンストラクターを指定します。
  • 「プライベートな静的 MyDialog インスタンス」を作成します。- ダイアログ クラスの属性。
  • "public static MyDialog getInstance() { ... }; - インスタンスを返し、null の場合は最初にインスタンス化するメソッドを作成します。

MyDialog は、ダイアログ ウィンドウのクラスの名前にする必要があります。

次に、ダイアログを表示する必要があるたびに、シングルトンを参照するだけです。

MyDialog.getInstance().showDialog();

showDialog は、ダイアログ ウィンドウを表示するだけです。

于 2009-04-30T11:00:27.273 に答える