0

我想在 TextBox 中设置值时触发一个事件setText("something")

到目前为止我尝试了什么

w.addChangeHandler(new ChangeHandler() {            
    @Override
    public void onChange(ChangeEvent event) {
    isChanged = true;
}
});

我还尝试了一个自定义的 TextBox 来监听过去的事件

class CustomTextBox extends TextBox implements HasHandlers {

 private HandlerManager handlerManager;

 public CustomTextBox() {
     super();        
     handlerManager = new HandlerManager(this);  
     sinkEvents(Event.ONPASTE);      
 }

 @Override
 public void onBrowserEvent(Event event) {
   super.onBrowserEvent(event);

   switch (event.getTypeInt()) {
     case Event.ONPASTE:{
      fireEvent(new TextChangeEvent());
       break;
     }
     default:
       // Do nothing
   }
 }

 @Override
 public void fireEvent(GwtEvent<?> event) {
   handlerManager.fireEvent(event);
 }

 public HandlerRegistration addTextChangeEventHandler(TextChangeEventHandler handler) {
   return handlerManager.addHandler(TextChangeEvent.TYPE, handler);
 }
}

如果没有成功,任何建议将不胜感激。

4

1 回答 1

2

setText不会触发事件。

将 a 添加ValueChangeHandler<String>到您的TextBox,然后用于在设置新值时向所有处理程序setValue("something", true)触发 a ValueChangeEvent<String>,无论框 id 是否禁用。

于 2012-06-12T10:42:20.797 回答