我修改了类ValueChangeHandler
的onValueChange
方法,这样我就可以在应用程序中的所有DatePicker
中使用它,但我想知道是哪个DatePicker
触发了事件。我如何获得这些信息?
这是我的ValueChangeHandler
自定义类的代码:
class calendarChangeHandler implements ValueChangeHandler<Date>{
@Override
public void onValueChange(ValueChangeEvent<Date> event) {
endCalendar.hideDatePicker();
initCalendar.hideDatePicker();
Date initDate = initCalendar.getValue();
Date endDate = endCalendar.getValue();
int numDias = 0;
if (initDate != null && endDate != null && (endDate.after(initDate))){
numDias = (int)((endDate.getTime()-initDate.getTime())/MILLSECS_PER_DAY);
createTable(numDias+2);
}
}
}
非常感谢:)
如果只有几个小部件连接到处理程序,那么使用if
语句可能更容易:
ValueChangeHandler<Date> handler = new ValueChangeHandler<Date>() {
@Override
public void onValueChange(ValueChangeEvent<Date> event) {
if (box1.equals(event.getSource())) {
//It was box1.
} else {
//It was box2.
}
}
};
否则,只需使用event.getSource()
并将结果强制转换为所需类型:
ValueChangeHandler<Date> handler = new ValueChangeHandler<Date>() {
@Override
public void onValueChange(ValueChangeEvent<Date> event) {
DateBox srouce = (DateBox) event.getSource();
//Do something with the source.
}
};
ValueChangeEvent的getSource()方法应该告诉您是谁触发了该事件。