2009-05-31 6 views
5

私の現在のプロセスは以下の通りである。カスタムウィジェットの

  1. 私のウィジェットクラスを作成します - コンポジット拡張します。
  2. このウィジェットのリスナーインタフェースを作成します。
  3. リスナーコレクションインタフェース - ウィジェットのプライベート内部クラスを作成します。
  4. ウィジェットでadd/removeListenerメソッドを作成します。
  5. ウィジェットの内部で、イベントをリスナーで発生させます。

私のリスナーは、onEntityDisplayRequested(Entity entity)などきめ細かいイベントを、火災ので、私は株式のリスナーを使用することはできません。

ウィジェットの結合度が低く、再利用が可能ですが、かなり冗長です。カスタムウィジェットの設計をより適切に処理する方法はありますか?

答えて

3

新しいウィジェットごとに個別のリスナーインターフェースは必要ありません。例えば。 ClickListenerはさまざまなウィジェットクラスによって使用されます。明らかに、カスタムウィジェットの中には新しいリスナータイプが必要なものもありますが、それは自動ではありません。

+0

お返事ありがとうございます。カスタムイベントを発生させるためにこれらのリスナーを使用しています。 onEntityDisplayRequested(Entity e)、ストックリスナーは使用できません。 –

+0

これまでのところ、最高の唯一の答えです。勝者! –

2

私はJavaが以前と同じ問題に直面したと思います。解決策は、PropertyChangeイベントを持つことでした。 - PropertyChangeListener - PropertyChangeSupport - イベントの発生を委任することができ、リスナーの登録と登録解除を行うことができます。 - ソース、プロパティ名、および古い+新しい値を含むPropertyEventが付属します。

イベントの名前は文字列として一致しますが、細かいイベントを発生させたり、外部クラスをサポートしたりすることができます。

私はこれをGWTで広範に使用していないため、効率性についてはコメントできません。

関連する問題