1

JFrame があり、ユーザーがボタンを押すと入力 jdialog が表示されます。jdialog を非モーダル モードにする必要があり、ユーザーが [OK] を押したら、入力に基づいて何らかのアクションを実行したいと考えています。現在、jdialog で参照としてビューを渡しているため、ユーザーが [OK] を押すと、jdialog はビューのメソッドを呼び出します。これを処理するためのより標準化された方法はありますか、それともこれが唯一の方法ですか? jdialog を非モーダル モードにする必要があります

ありがとう

4

2 に答える 2

1

java.lang.Runnableユーザーが[OK]ボタンを押したときに、JDialogから呼び出されるaを渡すことができます。このようにして、実行したいコードをRunnable自体の中に入れることができます。

于 2010-09-06T08:02:37.170 に答える
1

コールバックを使用する現在のアプローチは簡単ですが、結果として得られる密結合を減らすためにオブザーバー パターンが一般的に使用されます。Swing では、次の 2 つの実装が一般的です。

  1. ビューがObserverインターフェイスを実装するように調整し、入力ウィンドウが含まれている のインスタンスに委任されるようにしますObservable。このnotifyObservers()メソッドを使用して、オブジェクト参照を に渡すことができますObserver。非常に簡単な例がここにあります。

  2. EventListenerListビューが関心を登録するカスタム イベントを使用して、入力ウィンドウを維持します。リスナーにとって重要なデータは、イベント自体で渡すことができます。javax.swing.eventそのような型で既存のカスタム イベントを再利用したり、カスタム イベントをモデル化したりすると便利な場合があります。すべてJComponentに が含まれていEventListenerListます。

于 2010-09-06T09:21:47.607 に答える