特定时间后的GWT火灾值更改事件
我有一个收集量很大的webapp。因此,我的用户会得到一个文本框来过滤集合。 但每次用户输入一个字母,过滤操作就会开始。有时候这很慢 因此,我只想在用户停止键入一秒钟时获取值更改事件 我这样试过:特定时间后的GWT火灾值更改事件,gwt,timer,textbox,Gwt,Timer,Textbox,我有一个收集量很大的webapp。因此,我的用户会得到一个文本框来过滤集合。 但每次用户输入一个字母,过滤操作就会开始。有时候这很慢 因此,我只想在用户停止键入一秒钟时获取值更改事件 我这样试过: @Override public void onValueChange( ValueChangeEvent<String> event ) { Timer t = new Timer() { @Override public void r
@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 );
}
@覆盖
ValueChange上的公共作废(ValueChangeEvent事件)
{
定时器t=新定时器()
{
@凌驾
公开募捐
{
addChangeHandler(新的ChangeHandler()
{
@凌驾
更改后的公共无效(更改事件1)
{
ValueChangeEvent.fire(TextBoxPSG.this,getValue());
}
} );
}
};
t、 附表(15000);
}
但这不起作用。
也许有人有一个想法或相同的问题
提前谢谢 不要使用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);
}
});
这很有帮助,但我们不会在每次需要过滤器时都实现这一点。在文本框中直接这样做会很好。因此,只允许文本框在一段时间后触发changeEvent或其他事件。然后,您需要对文本框进行子类化,基本上是将相同的代码移动到文本框中。如果您只在少数地方需要它,那么我的解决方案是一个更好的选择。我找到了另一个很好的解决方案。我写我自己的事件。然后在run方法中触发此事件。所以每个对这件事感兴趣的人都能得到它。