Часы обратного отсчета в GWT

Я хочу создать часы обратного отсчета в 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
    }

person Community    schedule 17.07.2011    source источник


Ответы (2)


Попробуйте Timer (См. здесь).

Очень быстро изменив код примера на что-то близкое к тому, что вы хотите, вы, тем не менее, захотите улучшить это для своих целей:

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).

person Jack    schedule 17.07.2011

Следующий фрагмент, показывающий использование таймера, тоже работает. Он показывает, как правильно запланировать таймер и как его отменить.

 // 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().
person xtremebytes    schedule 01.03.2012