0

我有一个扩展复合并实现包含 3 个日期对象的 HasValueChangeHandlers 的小部件:beg、current 和 end。我正在尝试添加一个值更改处理程序,该处理程序能够判断哪个日期对象发生了更改;但对我来说,最好的方法并不是立即显而易见。

解决这个问题的最佳方法是什么?在不返回并比较值的情况下,我如何知道哪个 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 回答