GWT Fire ValueChangeEvent在特定时间之后

时间:2014-08-28 12:55:30

标签: gwt timer textbox

我有一个包含大量集合的webapp。所以我的用户得到一个文本框来过滤集合。 但每次用户输入一个字母时,过滤操作就会开始。有时这很慢。

所以我想只在用户停止输入一秒钟时才获得值更改事件。

我试过这种方式:

  @Override
  public void onValueChange( ValueChangeEvent<String> event )
  {
    Timer t = new Timer()
    {
      @Override
      public void run()
      {
        addChangeHandler( new ChangeHandler()
        {
          @Override
          public void onChange( ChangeEvent event1 )
          {
            ValueChangeEvent.fire( TextBoxPSG.this, getValue() );
          }
        } );
      }
    };
    t.schedule( 15000 );
  }

但这不起作用。 也许有人有想法或同样的问题。

提前致谢。

1 个答案:

答案 0 :(得分:0)

不要使用ValueChangeEvent。使用KeyUpEvent。

private static Timer timer = new Timer() {
    @Override
    public void run() {
        // do you filter work;
    }
};

...
myTextBox.addKeyUpHandler(new KeyUpHandler() {

    @Override
    public void onKeyUp(KeyUpEvent event) {
        if (timer.isRunning()) {
            timer.cancel();
        }
        timer.schedule(1000);
    }

});