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



我修改了类ValueChangeHandleronValueChange方法,这样我就可以在应用程序中的所有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()方法应该告诉您是谁触发了该事件。

最新更新