2011-07-17 50 views
3

我想在GWT中創建一個倒計時時鐘,但我無法找到等待一秒鐘的正確功能。我嘗試了Thread.Sleep(),但我認爲它是用於另一個目的。 你能幫我嗎?這是我的代碼。GWT中的倒數時鐘

int count=45; 

    RootPanel.get("countdownLabelContainer").add(countdown); 
    for(int i=count; i>=0; i--) 
    { 
     countdown.setText(Integer.toString(i)); 
     // Place here the wait-for-one-second function 
    } 

回答

4

Timer一試(See Here)。

更改示例代碼真正的快一些接近你想要什麼,你會想,雖然這愛好者爲您的用途:

public class TimerExample implements EntryPoint, ClickListener { 
    int count = 45; 

    public void onModuleLoad() { 
    Button b = new Button("Click to start Clock Updating"); 
    b.addClickListener(this); 
    RootPanel.get().add(b); 
    } 

    public void onClick(Widget sender) { 
    // Create a new timer that updates the countdown every second. 
    Timer t = new Timer() { 
     public void run() { 
     countdown.setText(Integer.toString(count)); 
     count--; 
     } 
    }; 

    // Schedule the timer to run once every second, 1000 ms. 
    t.schedule(1000); 
    } 
} 

這聽起來像在一般地區的東西是什麼你看對於。請注意,您可以使用timer.cancel()來停止計時器。你會想要將這與你的計數結合起來(當45次0時)。

3

顯示使用定時器工作過下面的代碼片段。它顯示瞭如何正確安排計時器以及如何取消計時器。

// Create a new timer that updates the countdown every second. 
    Timer t = new Timer() { 
     int count = 60; //60 seconds 
     public void run() { 
     countdown.setText("Time remaining: " + Integer.toString(count) + "s."); 
     count--; 
     if(count==0) { 
      countdown.setText("Time is up!"); 
      this.cancel(); //cancel the timer -- important! 
     } 
     } 
    }; 

    // Schedule the timer to run once every second, 1000 ms. 
    t.scheduleRepeating(1000); //scheduleRepeating(), not just schedule().