我有一个扩展复合的小部件,并实现包含3个Date对象的HasValueChangeHandlers:beg,current和end。我试图能够添加一个值更改处理程序,它将能够告诉哪个日期对象已更改;但对我而言,最明显的方法并不是那么明显。
解决此问题的最佳方法是什么?如何在不返回并比较值的情况下知道哪个Date对象已更改?
我应该为每个变量创建空类并将它们作为源传递,然后在onValueChange方法中比较事件的源类吗?似乎应该有更好的方式...
感谢您的帮助。
答案 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..
}