GWT:向EditTextCell小部件添加值更改侦听器

GWT:向EditTextCell小部件添加值更改侦听器,gwt,gwt-edittext,Gwt,Gwt Edittext,我想对网格中的EditTextCell小部件进行验证。因此,我试图扩展EditTextCell,并向其添加一个值更改侦听器,以便继续验证。但我无法添加相同的内容。任何帮助都将不胜感激。Am使用GWT2.4.0 我的代码看起来像这样 公共类MyEditTextCell扩展了EditTextCell{ 公共MyEditTextCell(){ 超级(); onValueChange(新的ValueChangeHandler(){ @重写ValueChange上的公共无效(ValueChangeEven

我想对网格中的
EditTextCell
小部件进行验证。因此,我试图扩展
EditTextCell
,并向其添加一个值更改侦听器,以便继续验证。但我无法添加相同的内容。任何帮助都将不胜感激。Am使用GWT2.4.0

我的代码看起来像这样


公共类MyEditTextCell扩展了EditTextCell{
公共MyEditTextCell(){
超级();
onValueChange(新的ValueChangeHandler(){
@重写ValueChange上的公共无效(ValueChangeEvent事件){
窗口警报(“jsdfk”);
} 
} ); 
} 
ValueChange上的私有void(ValueChangeHandler ValueChangeHandler){
窗口警报(“jsdfk”);
} 
}   

使用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来检查值。计时器应在聚焦时运行,在模糊时停止

如果您想以“事件方式”编码 1) 将validateValue()替换为ValueChangeEvent.fire(this,vale); 2) 将HasValueChangeHandlers添加到MyEditTextCEll接口,并按如下方式实现它

public HandlerRegistration addValueChangeHandler(
      ValueChangeHandler<String> handler) {
    return addHandler(handler, ValueChangeEvent.getType());
  }
public handler注册addValueChangeHandler(
ValueChangeHandler){
返回addHandler(handler,ValueChangeEvent.getType());
}

使用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来检查值。计时器应在聚焦时运行,在模糊时停止

如果您想以“事件方式”编码 1) 将validateValue()替换为ValueChangeEvent.fire(this,vale); 2) 将HasValueChangeHandlers添加到MyEditTextCEll接口,并按如下方式实现它

public HandlerRegistration addValueChangeHandler(
      ValueChangeHandler<String> handler) {
    return addHandler(handler, ValueChangeEvent.getType());
  }
public handler注册addValueChangeHandler(
ValueChangeHandler){
返回addHandler(handler,ValueChangeEvent.getType());
}

“但我无法添加相同的内容。”您尝试了什么?提供代码或错误堆栈tracepublic类MyEditTextCell扩展EditTextCell{public MyEditTextCell(){super();onValueChange(新ValueChangeHandler(){@Override public void onValueChange(ValueChangeEvent事件){Window.alert(“jsdfk”);}}};}private void onValueChange(ValueChangeHandler ValueChangeHandler){Window.alert(“jsdfk”);}}}“但我无法添加相同的内容。”您尝试了什么?提供代码或错误堆栈跟踪公共类MyEditTextCell扩展EditTextCell{public MyEditTextCell(){super();onValueChange(new ValueChangeHandler()){@Override public void onValueChange(valuechangeent事件){Window.alert(“jsdfk”);}}}}私有void onValueChange(ValueChangeHandler-ValueChangeHandler){Window.alert(“jsdfk”);}