GWT中的倒计时时钟

时间:2011-07-17 16:58:14

标签: java javascript gwt clock

我想在GWT中创建倒计时时钟,但我找不到等待一秒的正确功能。我尝试使用Thread.Sleep(),但我认为这是出于另一个目的。 你能帮助我吗?这是我的代码。

    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
    }

3 个答案:

答案 0 :(得分:4)

尝试TimerSee 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时)。

答案 1 :(得分: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().

答案 2 :(得分:1)

您可以尝试使用Scheduler.scheduleDeferred查看Using the GWT Scheduler