如何在禁用的TextBox上处理setText(“Some Text”)事件

时间:2012-06-12 00:29:55

标签: events gwt textbox

我想在使用setText("something")

的TextBox中设置值时触发事件

到目前为止我尝试了什么

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);
 }
}

如果没有成功,我们将不胜感激。

1 个答案:

答案 0 :(得分:2)

setText不会触发事件。

ValueChangeHandler<String>添加TextBox,然后在设置新值时使用setValue("something", true)向所有处理程序发送ValueChangeEvent<String>,无论是否禁用了框ID。