我想对网格中的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" );
}
}
执行此操作的唯一适当方法是覆盖 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();
}
}
但是侦听键控、键下键和模糊事件并不能保证处理实际更改。如果您不想跳过任何更改(例如通过上下文右键单击菜单粘贴文本),则应添加检查值的com.google.gwt.user.client.Timer。定时器应在对焦时运行,在模糊时停止。
如果你想以"事件方式"编码1) 将 validateValue() 替换为 ValueChangeEvent.fire(this, vale);2)添加到你的MyEditTextCEll接口HasValueChangeHandlers并像这样实现它
public HandlerRegistration addValueChangeHandler(
ValueChangeHandler<String> handler) {
return addHandler(handler, ValueChangeEvent.getType());
}