Інтерфейси та зворотній виклик, Блог тільки про Java
Вчимося програмувати на Java з нуля
Інтерфейси та зворотній виклик

Пакетjavax.swing містить класTimer, який можна використовувати для відліку інтервалів часу. Наприклад, якщо у програмі передбачено годинник, то за допомогою класуTimer можна відраховувати кожну секунду і оновлювати циферблат годинника.
Встановлюючи таймер, ми задаємо інтервал часу і вказуємо, що має статися після закінчення. Як вказати таймеру, що він має робити? У багатьох мовах програмування визначається ім'я функції, яку таймер повинен періодично викликати. Проте класи зі стандартної бібліотеки мовиJava використовують об'єктно-орієнтований підхід. Програміст повинен передати таймер об'єкт деякого класу. Після цього таймер викликає один із методів даного об'єкта. Передача об'єкта - гнучкіший механізм, ніж виклик функції, оскільки об'єкт може нести додаткову інформацію.
Зрозуміло, таймер повинен знати, який метод він має викликати. Для цього таймеру потрібно вказати об'єкт класу, що реалізує інтерфейсActionListener з пакетаjava.awt.event. Цей інтерфейс виглядає так:
Після закінчення заданого інтервалу часу таймер викликає методactionPerformed().
Припустимо, нам потрібно щодесять секунд виводити на екран повідомлення про поточний час, що супроводжуєтьсязвуковим сигналом. Для цього необхідно визначити клас, який реалізує інтерфейсActionListener, а потім помістити оператори, які потрібно виконати, у тіло методуactionPerformed().
Зверніть увагу на параметрActionEvent методуactionPerformed(). Він містить інформацію про подію, наприклад, про об'єкт, що його породив. У цій програмі детальна інформація про подію не є важливою, тому можна просто проігнорувати цей параметр.
Потім слід створити об'єкт даного класу і передати його конструктору класуTimer :