我想对网格中的EditTextCell
小部件进行验证。所以我试图扩展EditTextCell
并添加一个值更改侦听器,以便我可以继续验证。但我无法添加相同的内容。任何帮助,将不胜感激。我使用的是GWT 2.4.0
我的代码看起来像这样。
public class MyEditTextCell extends EditTextCell {
public MyEditTextCell() {
super();
onValueChange( new ValueChangeHandler<String>() {
@Override public void onValueChange( ValueChangeEvent event ) {
Window.alert( "jsdfk" );
}
} );
}
private void onValueChange( ValueChangeHandler<String> valueChangeHandler ) {
Window.alert( "jsdfk" );
}
}
答案 0 :(得分:1)
使用EditTextCell执行此操作似乎唯一合适的方法是覆盖onBrowserEvent(),类似于EditTextCell类的私有editEvent()方法。
public void onBrowserEvent(Context context, Element parent, String value,
NativeEvent event, ValueUpdater valueUpdater) {
super.onBrowserEvent(context, parent, value, event, valueUpdater);
String type = event.getType();
if ("keyup".equals(type) || "keydown".equals(type) || "blur".equals(type) {
validateValue();
}
}
但是,监听keyup,keydown和blur事件并不能保证处理实际的更改。 如果您不想跳过任何更改(例如,按上下文右键单击菜单粘贴文本),则应添加com.google.gwt.user.client.Timer来检查值。计时器应该在焦点上运行并停止模糊。
如果你想以'event way'编码 1)用ValueChangeEvent.fire替换validateValue()(this,vale); 2)添加到你的MyEditTextCEll接口HasValueChangeHandlers并像这样实现它
public HandlerRegistration addValueChangeHandler(
ValueChangeHandler<String> handler) {
return addHandler(handler, ValueChangeEvent.getType());
}