具有多个变量的值更改处理程序

时间:2013-03-09 19:45:42

标签: java gwt

我有一个扩展复合的小部件,并实现包含3个Date对象的HasValueChangeHandlers:beg,current和end。我试图能够添加一个值更改处理程序,它将能够告诉哪个日期对象已更改;但对我而言,最明显的方法并不是那么明显。

解决此问题的最佳方法是什么?如何在不返回并比较值的情况下知道哪个Date对象已更改?

我应该为每个变量创建空类并将它们作为源传递,然后在onValueChange方法中比较事件的源类吗?似乎应该有更好的方式...

感谢您的帮助。

1 个答案:

答案 0 :(得分: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..

 }