Events 如何知道哪个小部件触发了事件(GWT)

Events 如何知道哪个小部件触发了事件(GWT),events,gwt,widget,datepicker,Events,Gwt,Widget,Datepicker,我已经修改了类ValueChangeHandler的onValueChange方法,以便我可以在应用程序中的所有DatePicker中使用它,但我想知道是哪个DatePicker触发了事件。我如何获得这些信息 以下是我的ValueChangeHandler自定义类的代码: class calendarChangeHandler implements ValueChangeHandler<Date>{ @Override public void onValueChan

我已经修改了类
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);
            }
    }

}
类calendarChangeHandler实现ValueChangeHandler{ @凌驾 ValueChange上的公共作废(ValueChangeEvent事件){ endCalendar.hideDatePicker(); initCalendar.hideDatePicker(); Date initDate=initCalendar.getValue(); 日期endDate=endCalendar.getValue(); int numDias=0; 如果(initDate!=null&&endDate!=null&&endDate.after(initDate))){ numDias=(int)((endDate.getTime()-initDate.getTime())/MILLSECS_/天); createTable(numDias+2); } } }
非常感谢:)

的getSource()方法应该会告诉您是谁触发了事件。

如果处理程序只附带了几个小部件,那么使用
If
语句可能更容易:

ValueChangeHandler=newvaluechangehandler(){
@凌驾
ValueChange上的公共作废(ValueChangeEvent事件){
if(box1.equals(event.getSource())){
//那是盒子1。
}否则{
//是第二箱。
}
}
};
否则,只需使用
event.getSource()
并将结果强制转换为所需类型:

ValueChangeHandler=newvaluechangehandler(){
@凌驾
ValueChange上的公共作废(ValueChangeEvent事件){
DateBox srouce=(DateBox)event.getSource();
//对源代码做些什么。
}
};

但是当我尝试这样显示它时:Window.alert(String.valueOf(event.getSource());我只是在这条消息中得到了对象的类型:尝试将其转换为日期框。