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



我想对网格中的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" ); 
        } 
    }   
似乎使用 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();
          }
  }

但是侦听键控、键下键和模糊事件并不能保证处理实际更改。如果您不想跳过任何更改(例如通过上下文右键单击菜单粘贴文本),则应添加检查值的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());
  }

相关内容

  • 没有找到相关文章

最新更新