0

コンポジットを拡張し、beg、current、endの3つのDateオブジェクトを含むHasValueChangeHandlersを実装するウィジェットがあります。どの日付オブジェクトが変更されたかを知ることができる値変更ハンドラーを追加できるようにしようとしています。しかし、それを行うための最良の方法はすぐにはわかりません。

これを解決するための最良の方法は何ですか?戻って値を比較せずに、どのDateオブジェクトが変更されたかを知るにはどうすればよいですか?

変数ごとに空のクラスを作成し、それらをソースとして渡してから、onValueChangeメソッドでイベントのソースクラスの比較をオンにする必要がありますか?もっと良い方法があるはずです...

助けてくれてありがとう。

4

1 に答える 1

0

あなたの最善のアプローチは、日付オブジェクト自体が実装することを利用することだと思いますHasValueChangedHandlers。複合クラスでは、変更されたハンドラーをそれぞれに追加して、どのハンドラーが変更されたかを知ることができます。実際、それらすべてに同じ動作を適用したい場合は、すべてに同じハンドラーを設定することもできます。例えば:

 public MyClass extends Composite implements HasValueChangedHandler{
       private DateBox beg;
       private DateBox current;
       private DateBox end;   

       //.... rest of the code..

       public HandlerRegistration addValueChangedHanlder(ValueChangedHandler<Date> h){
                 beg.addValueChangedHandler(h);
                 current.addValueChangedHandler(h);
                 end.addValueChangedHandler(h);

       }
        //.... rest of the code..

 }
于 2013-03-09T20:10:54.400 に答える