我想在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
}
答案 0 :(得分: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时)。
答案 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