Вызов отмены () или очистки локально созданного таймера - PullRequest
0 голосов
/ 28 октября 2018

Мне просто интересно, как я могу вызвать отмену или очистку локально созданного таймера, т.е. мой таймер создается при тестировании кнопки:

        new Timer(1000, new ActionListener() {
        int count = 0;
        public void actionPerformed(ActionEvent e) {
            if (count == 5) {
                lights[0].toggle();
                lights[1].toggle();
            } else if (count == 7) {
                lights[1].toggle();
                lights[2].toggle();
            } else if (count == 12) {
                lights[2].toggle();
                lights[0].toggle();
                count = 0;
                //Ideally, call cancel() or purge here
            }
            count++;
        }
    }).start();

Как я могу заставить таймер отменитьв последнем утверждении if?при попытке вызвать cancel () или purger () пытается вызвать его на Actionlistener.

Ответы [ 2 ]

0 голосов
/ 28 октября 2018

ActionEvent наследует метод для получения объекта, из которого он произошел.

...
else if (count == 12) {
    lights[2].toggle();
    lights[0].toggle();
    count = 0;
    ((Timer)e.getSource()).stop();
}

Cancel() и Purge() являются методами из java.util.Timer, javax.swing.Timer использует Stop()

0 голосов
/ 28 октября 2018
Timer timer = new Timer(1000, null);
timer.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
        // ...
        timer.stop();
        // ...
    }
});
timer.start();

В Timer нет метода cancel() или purge(), поэтому я продемонстрировал с помощью stop(), который существует.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...