计时器在GWT中不工作,

计时器在GWT中不工作,,gwt,timer,Gwt,Timer,当我这边的执行完成时,我正在重定向其他网页。我想向我的用户显示一条消息,我们正在“在%d秒内重定向”,因为我使用了Timer类,但它仍然会立即重定向 代码如下 public void redirect(){ hanldeWait() ; Window.Location.assign(Url) ; } private void hanldeWait(){ Timer timer = new Timer() { int i = 5 ;

当我这边的执行完成时,我正在重定向其他网页。我想向我的用户显示一条消息,我们正在“在%d秒内重定向”,因为我使用了Timer类,但它仍然会立即重定向

代码如下

 public void redirect(){
      hanldeWait() ;
       Window.Location.assign(Url) ;
 }

   private void hanldeWait(){
    Timer timer = new Timer() {
        int i = 5 ;
        public void run() {
            if(i < 0){
                errorMessage.setVisible(false);
                cancel() ;
            }else{
                i-- ;
                String redirectionMessage = "Redirecting in %d seconds" ;
                String displayMessage = redirectionMessage ;

                displayMessage  = format(redirectionMessage, (Integer)i) ;
                errorMessage.setText(displayMessage);
                errorMessage.setVisible(true);

            }
        }
      };
      timer.scheduleRepeating(5000) ;
}
public void redirect(){
hanldeWait();
Window.Location.assign(Url);
}
私有void hanldeWait(){
定时器=新定时器(){
int i=5;
公开募捐{
if(i<0){
errorMessage.setVisible(错误);
取消();
}否则{
我--;
String redirectionMessage=“在%d秒内重定向”;
String displayMessage=重定向消息;
displayMessage=格式(重定向消息,(整数)i);
errorMessage.setText(显示消息);
errorMessage.setVisible(真);
}
}
};
定时重复(5000);
}

如果我在这里做错了什么。

您的代码告诉浏览器立即重定向,不要延迟

如果要在延迟后重定向,则

Window.Location.assign(Url) ;

应该在计时器的
run
方法中调用。

scheduleRepeating(5000)
应该是
schedule(5000)
,如果您只想让它运行一次。不,我想重复,直到我达到0。但是您已经告诉它通过
this.schedule(1000)
再次运行。此行取消了scheduleRepeating(5000)。谢谢Andrei,更正了代码。。