如何使addValueChangeHandler行为就像addChangeHandler
问题描述:
我做了一个实现了接口HasChangeHandlers如何使addValueChangeHandler行为就像addChangeHandler
一包小部件,但我就是不适合的事件给对方。
public HandlerRegistration addChangeHandler(final ChangeHandler handler) {
HandlerRegistration registration1 = dateFrom.addValueChangeHandler(handler);// Compile error
HandlerRegistration registration2 = dateTo.addValueChangeHandler(new ValueChangeHandler<Date>() {
@Override
public void onValueChange(ValueChangeEvent<Date> dateValueChangeEvent) {
//have to fire handler ??
}
});
return null; // what i should return here?
}
在此先感谢!
答
您返回要将事件关联到的成员对象的处理程序。比如我有一个文本框+标签控件和我不能从什么地方创建它@UiHandler事件,因为它不是标准所以我所做的就是:
public class TextBoxAndLabel implements HasKeyUpHandlers {
private TextBox myTextBox;
private Label myLabel;
@Override
public HandlerRegistration addKeyUpHandler(KeyUpHandler keyUpHandler) {
return myTextBox.addKeyUpHandler(keyUpHandler);
}
}
,现在我可以实现
@UiHandler("myClassObject")
答
ChangeHandler不是ValueChangeHandler。您必须创建另一个实现ValueChangeHandler的包装类,并将ChangeHandler作为实例变量。然后,你可以写......
HandlerRegistration registration1 = dateFrom.addValueChangeHandler(new ChangeHandlerWrapper(handler));
哪里ChangeHandlerWrapper是实现ValueChangeHandler类。例如,
class ChangeHandlerWrapper<T> implements ValueChangeHandler<Date>
{
private ChangeHandler handler;
public void onValueChange(ValueChangeEvent<T> changeEvent) {
handler.onChange(null);
}
}
当然,这里假定您不需要处理程序中的实际事件。如果你这样做,事情会变得更加复杂。
OK 。什么应该在onValueChange方法? – 2009-12-15 08:36:47