我有一个包含大量集合的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 );
}
但这不起作用。 也许有人有想法或同样的问题。
提前致谢。
答案 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);
}
});