Класс Timer

Все реализованные интерфейсы:
Serializable
public class Timer
extends Object
implements Serializable

Вызывает один или несколько ActionEvent через указанные интервалы. Пример использования — объект анимации, который использует Timer для запуска отрисовки кадров.

Для настройки таймера необходимо создать объект Timer, зарегистрировать один или несколько обработчиков событий на нём и запустить таймер с помощью метода start. Например, следующий код создаёт и запускает таймер, который генерирует событие действия один раз в секунду (как указано в первом аргументе конструктора Timer). Второй аргумент конструктора Timer указывает обработчик для получения событий действия таймера.

int delay = 1000; //milliseconds
  ActionListener taskPerformer = new ActionListener() {
      public void actionPerformed(ActionEvent evt) {
          //...Perform a task...
      }
  };
  new Timer(delay, taskPerformer).start();

Timers создаются путём указания параметра задержки и ActionListener. Параметр задержки используется для установки начальной задержки и задержки между событиями в миллисекундах. После запуска таймера он ожидает начальную задержку, прежде чем генерировать первое событие ActionEvent для зарегистрированных слушателей. После этого первого события он продолжает генерировать события каждый раз, когда истекает задержка между событиями, до тех пор, пока он не будет остановлен.

После создания начальную задержку и задержку между событиями можно изменить независимо друг от друга, а также добавить дополнительные ActionListeners.

Если вы хотите, чтобы таймер сработал только один раз и затем остановился, вызовите setRepeats(false) для таймера.

Хотя все Timer выполняют ожидание с помощью одного общего потока (созданного первым объектом Timer, который выполняется), обработчики событий действия для Timer выполняются в другом потоке — потоке обработки событий. Это означает, что обработчики действий для Timer могут безопасно выполнять операции с элементами Swing. Однако это также означает, что обработчики должны выполняться быстро, чтобы интерфейс оставался отзывчивым.

В версии 1.3 на платформу Java был добавлен ещё один класс Timer: java.util.Timer. И он, и javax.swing.Timer обеспечивают одинаковую основную функциональность, но java.util.Timer более универсален и имеет больше функций. У javax.swing.Timer есть две особенности, которые могут сделать его немного проще в использовании с графическими интерфейсами. Во-первых, его метафора обработки событий знакома программистам графических интерфейсов и может упростить взаимодействие с потоком обработки событий. Во-вторых, автоматическое разделение потоков означает, что вам не нужно предпринимать никаких специальных шагов, чтобы избежать создания слишком большого количества потоков. Вместо этого ваш таймер использует тот же поток, который используется для мигания курсора, появления всплывающих подсказок и т. д.

Более подробную документацию и несколько примеров использования таймеров можно найти на странице Как использовать таймеры в учебном пособии Java. Для получения дополнительных примеров и помощи в выборе между этим классом Timer и java.util.Timer, см. статью Использование таймеров в приложениях Swing в журнале The Swing Connection.

Предупреждение: Сериализованные объекты этого класса не будут совместимы с будущими выпусками Swing. Текущая поддержка сериализации подходит для краткосрочного хранения или RMI между приложениями, работающими на одной версии Swing. Начиная с версии 1.4, поддержка долгосрочного хранения всех JavaBeans™ была добавлена в пакет java.beans. Пожалуйста, обратитесь к XMLEncoder.

С:
1.2
См. также:
Timer, Serialized Form

Поля

Модификатор и тип Поле Описание
protected EventListenerList listenerList

Коллекция зарегистрированных слушателей

Конструкторы

Конструктор Описание
Timer​(int delay, ActionListener listener)

Создаёт Timer и инициализирует начальную задержку и задержку между событиями в delay миллисекундах.

Методы

Модификатор и тип Метод Описание
void addActionListener​(ActionListener listener)

Добавляет обработчик событий в Timer.

protected void fireActionPerformed​(ActionEvent e)

Уведомляет всех слушателей, которые проявили интерес к уведомлению об этом типе события.

String getActionCommand()

Возвращает строку, которая будет передана в качестве команды действия в ActionEvent событиях, генерируемых этим таймером.

ActionListener[] getActionListeners()

Возвращает массив всех обработчиков событий, зарегистрированных в этом таймере.

int getDelay()

Возвращает задержку в миллисекундах между срабатываниями событий действия.

int getInitialDelay()

Возвращает начальную задержку таймера.

<T extends EventListener>
T[]
getListeners​(Class<T> listenerType)

Возвращает массив всех объектов, в настоящее время зарегистрированных как FooListener для этого Timer.

static boolean getLogTimers()

Возвращает true, если включён журнал.

boolean isCoalesce()

Возвращает true, если Timer объединяет несколько ожидаемых событий действия.

boolean isRepeats()

Возвращает true (по умолчанию), если Timer будет отправлять событие действия своим слушателям несколько раз.

boolean isRunning()

Возвращает true, если Timer запущен.

void removeActionListener​(ActionListener listener)

Удаляет указанного обработчика событий из Timer.

void restart()

Перезапускает Timer, отменяя любые ожидающие срабатывания и вызывая его с начальной задержкой.

void setActionCommand​(String command)

Устанавливает строку, которая будет передана в качестве команды действия в ActionEvent событиях, генерируемых этим таймером.

void setCoalesce​(boolean flag)

Устанавливает, объединяет ли Timer несколько ожидаемых ActionEvent срабатываний.

void setDelay​(int delay)

Устанавливает задержку между событиями таймера в миллисекундах.

void setInitialDelay​(int initialDelay)

Устанавливает начальную задержку таймера в миллисекундах.

static void setLogTimers​(boolean flag)

Включает или выключает логирование таймера.

void setRepeats​(boolean flag)

Если flag равно false, то Timer отправит только одно событие действия своим слушателям.

void start()

Запускает Timer, вызывая отправку событий действия его слушателям.

void stop()

Останавливает Timer, прекращая отправку событий действия его слушателям.

Методы, объявленные в классе java.lang.Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Поля

listenerList

protected EventListenerList listenerList

Коллекция зарегистрированных слушателей

Конструкторы

Timer

public Timer(int delay,
             ActionListener listener)

Создаёт таймер и инициализирует начальную задержку и задержку между событиями значением delay миллисекунд. Если delay меньше или равно нулю, таймер срабатывает сразу после запуска. Если listener не null, он регистрируется как обработчик событий таймера.

Параметры:
delay - миллисекунды для начальной и промежуточной задержек
listener - начальный слушатель; может быть null
См. также:
addActionListener(java.awt.event.ActionListener), setInitialDelay(int), setRepeats(boolean)

Методы

addActionListener

public void addActionListener(ActionListener listener)

Добавляет обработчик событий в таймер.

Параметры:
listener - слушатель для добавления
См. также:
Timer(int, java.awt.event.ActionListener)

removeActionListener

public void removeActionListener(ActionListener listener)

Удаляет указанного обработчика событий из таймера.

Параметры:
listener - слушатель для удаления

getActionListeners

public ActionListener[] getActionListeners()

Возвращает массив всех зарегистрированных обработчиков событий этого таймера.

Возвращает:
все обработчики событий таймера или пустой массив, если обработчики не зарегистрированы
С тех пор:
1.4
См. также:
addActionListener(java.awt.event.ActionListener), removeActionListener(java.awt.event.ActionListener)

fireActionPerformed

protected void fireActionPerformed(ActionEvent e)

Уведомляет всех слушателей о событии.

Параметры:
e - событие для срабатывания
См. также:
EventListenerList

getListeners

public <T extends EventListener> T[] getListeners(Class<T> listenerType)

Возвращает массив всех объектов, зарегистрированных в качестве обработчиков событий этого таймера. Обработчики событий регистрируются с помощью метода addFooListener.

Вы можете указать аргумент listenerType с помощью литерала класса, например, FooListener.class. Например, вы можете запросить обработчики событий экземпляра Timer с помощью следующего кода:

ActionListener[] als = (ActionListener[])(t.getListeners(ActionListener.class));
Если таких слушателей нет, этот метод возвращает пустой массив.
Параметры типа:
T - тип класса обработчика событий
Параметры:
listenerType - тип запрашиваемых слушателей; этот параметр должен указывать интерфейс, который наследуется от java.util.EventListener
Возвращает:
массив всех объектов, зарегистрированных в качестве обработчиков событий таймера, или пустой массив, если такие слушатели не были добавлены
Исключения:
ClassCastException - если listenerType не указывает класс или интерфейс, реализующий java.util.EventListener
С тех пор:
1.3
См. также:
getActionListeners(), addActionListener(java.awt.event.ActionListener), removeActionListener(java.awt.event.ActionListener)

setLogTimers

public static void setLogTimers(boolean flag)

Включает или отключает логирование таймера. При включении сообщение публикуется в System.out при срабатывании таймера.

Параметры:
flag - флаг включения логирования
См. также:
getLogTimers()

getLogTimers

public static boolean getLogTimers()

Возвращает true, если логирование включено.

Возвращает:
true если логирование включено; в противном случае, false
См. также:
setLogTimers(boolean)

setDelay

public void setDelay(int delay)

Устанавливает задержку между событиями таймера в миллисекундах.

Параметры:
delay - задержка в миллисекундах
См. также:
setInitialDelay(int)

getDelay

public int getDelay()

Возвращает задержку между событиями в миллисекундах.

Возвращает:
задержка между событиями в миллисекундах
См. также:
setDelay(int), getInitialDelay()

setInitialDelay

public void setInitialDelay(int initialDelay)

Устанавливает начальную задержку таймера в миллисекундах.

Параметры:
initialDelay - начальная задержка в миллисекундах
См. также:
setDelay(int)

getInitialDelay

public int getInitialDelay()

Возвращает начальную задержку таймера.

Возвращает:
начальная задержка в миллисекундах
См. также:
setInitialDelay(int), setDelay(int)

setRepeats

public void setRepeats(boolean flag)

Если значение flag равно false, таймер отправит только одно событие своим слушателям.

Параметры:
flag - установить значение для остановки таймера после первого события

isRepeats

public boolean isRepeats()

Возвращает true, если таймер будет отправлять события многократно.

Возвращает:
true, если таймер будет отправлять события многократно
См. также:
setRepeats(boolean)

setCoalesce

public void setCoalesce(boolean flag)

Устанавливает, будет ли таймер объединять несколько ожидающих срабатываний. Занятое приложение может не успевать за генерацией событий таймера, что приводит к очереди нескольких событий. При обработке приложение отправляет эти события одно за другим, заставляя слушателей таймера получать последовательность событий без задержек. Объединение событий предотвращает эту ситуацию, сводя несколько ожидающих событий к одному. По умолчанию таймеры объединяют события.

Параметры:
flag - установить значение для отключения объединения

isCoalesce

public boolean isCoalesce()

Возвращает true, если таймер объединяет несколько ожидающих событий.

Возвращает:
true, если таймер объединяет несколько ожидающих событий
См. также:
setCoalesce(boolean)

setActionCommand

public void setActionCommand(String command)

Устанавливает строку, которая будет передана в качестве команды действия в событиях, генерируемых этим таймером. null является допустимым значением.

Параметры:
command - команда действия
С тех пор:
1.6

getActionCommand

public String getActionCommand()

Возвращает строку, которая будет передана в качестве команды действия в событиях, генерируемых этим таймером. Может быть null, что также является значением по умолчанию.

Возвращает:
команда действия, используемая для генерации событий
С тех пор:
1.6

start

public void start()

Запускает таймер, заставляя его отправлять события слушателям.

См. также:
stop()

isRunning

public boolean isRunning()

Возвращает true, если таймер работает.

Возвращает:
true, если таймер работает, false - в противном случае
См. также:
start()

stop

public void stop()

Останавливает таймер, прекращая отправку событий слушателям.

См. также:
start()

restart

public void restart()

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

© 1993, 2020, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/11/docs/api/java.desktop/javax/swing/Timer.html

Spec-Zone .ru
спецификации, руководства, описания, API