Spec-Zone.ru › OpenJDK 25

Класс Timer

java.lang.Object
javax.swing.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 есть две особенности, которые могут упростить его использование в графических интерфейсах. Во-первых, его модель обработки событий знакома разработчикам графических интерфейсов и может упростить работу с потоком диспетчеризации событий. Во-вторых, автоматическое совместное использование потока избавляет от необходимости предпринимать специальные меры, чтобы не создавать слишком много потоков. Вместо этого таймер использует тот же поток, который обеспечивает мигание курсоров, появление всплывающих подсказок и тому подобное.

Дополнительную документацию и несколько примеров использования таймеров можно найти в разделе Как использовать таймеры учебника The Java Tutorial.

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

С версии:
1.2
См. также:
  • Timer

Краткое описание полей

Модификатор и тип Поле Описание
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()
Возвращает начальную задержку объекта Timer.
<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)
Задаёт интервал между событиями для объекта Timer — число миллисекунд между последовательными событиями действия.
void setInitialDelay(int initialDelay)
Задаёт начальную задержку объекта Timer — время в миллисекундах, которое нужно выждать после запуска таймера перед генерацией первого события.
static void setLogTimers(boolean flag)
Включает или отключает журнал таймера.
void setRepeats(boolean flag)
Если flag имеет значение false, указывает объекту Timer отправить своим обработчикам только одно событие действия.
void start()
Запускает объект Timer, после чего он начинает отправлять своим обработчикам события действия.
void stop()
Останавливает объект Timer, после чего он перестаёт отправлять своим обработчикам события действия.

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

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

Подробное описание полей

listenerList

protected EventListenerList listenerList
Коллекция зарегистрированных обработчиков

Подробное описание конструкторов

Timer

public Timer(int delay, ActionListener listener)
Создаёт объект Timer и устанавливает для начальной задержки и интервала между событиями значение delay миллисекунд. Если значение delay меньше или равно нулю, таймер срабатывает сразу после запуска. Если listener не равно null, он регистрируется в таймере в качестве обработчика событий действия.
Параметры:
delay — начальная задержка и интервал между событиями в миллисекундах
listener — начальный обработчик; может быть null
См. также:
  • addActionListener(ActionListener)
  • setInitialDelay(int)
  • setRepeats(boolean)

Подробное описание методов

addActionListener

public void addActionListener(ActionListener listener)
Добавляет обработчик событий действия в Timer.
Параметры:
listener — добавляемый обработчик
См. также:
  • Timer(int, ActionListener)

removeActionListener

public void removeActionListener(ActionListener listener)
Удаляет указанный обработчик событий действия из Timer.
Параметры:
listener — удаляемый обработчик

getActionListeners

public ActionListener[] getActionListeners()
Возвращает массив всех обработчиков событий действия, зарегистрированных в этом таймере.
Возвращает:
все обработчики событий действия объекта-таймера ActionListener или пустой массив, если в данный момент обработчики событий действия не зарегистрированы
С версии:
1.4
См. также:
  • addActionListener(ActionListener)
  • removeActionListener(ActionListener)

fireActionPerformed

protected void fireActionPerformed(ActionEvent e)
Уведомляет всех обработчиков, зарегистрировавших интерес к уведомлениям о событиях этого типа.
Параметры:
e — генерируемое событие действия
См. также:
  • EventListenerList

getListeners

public <T extends EventListener> T[] getListeners(Class<T> listenerType)
Возвращает массив всех объектов, зарегистрированных в данный момент в качестве обработчиков FooListener для этого объекта Timer. Обработчики FooListener регистрируются с помощью метода addFooListener.

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

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

setLogTimers

public static void setLogTimers(boolean flag)
Включает или отключает журнал таймера. Если журнал включён, при каждом срабатывании таймера в System.out отправляется сообщение.
Параметры:
flag — true для включения ведения журнала
См. также:
  • getLogTimers()

getLogTimers

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

setDelay

public void setDelay(int delay)
Задаёт интервал между событиями для объекта Timer — число миллисекунд между последовательными событиями действия. Это не влияет на свойство начальной задержки, которое можно задать методом setInitialDelay.
Параметры:
delay — задержка в миллисекундах
См. также:
  • setInitialDelay(int)

getDelay

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

setInitialDelay

public void setInitialDelay(int initialDelay)
Задаёт начальную задержку объекта Timer — время в миллисекундах, которое нужно выждать после запуска таймера перед генерацией первого события. При создании это значение совпадает с интервалом между событиями, но затем становится независимым и не меняется при изменении интервала между событиями.
Параметры:
initialDelay — начальная задержка в миллисекундах
См. также:
  • setDelay(int)

getInitialDelay

public int getInitialDelay()
Возвращает начальную задержку объекта Timer.
Возвращает:
начальную задержку объекта Timer в миллисекундах
См. также:
  • setInitialDelay(int)
  • setDelay(int)

setRepeats

public void setRepeats(boolean flag)
Если flag имеет значение false, указывает объекту Timer отправить своим обработчикам только одно событие действия.
Параметры:
flag — укажите false, чтобы таймер остановился после отправки первого события действия

isRepeats

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

setCoalesce

public void setCoalesce(boolean flag)
Задаёт, будет ли объект Timer объединять несколько ожидающих срабатываний ActionEvent. Занятое приложение может не успевать обрабатывать генерируемые объектом Timer события, из-за чего в очередь может попасть несколько событий действия. При обработке приложение отправляет эти события одно за другим, в результате чего обработчики объекта Timer получают последовательность событий без задержки между ними. Объединение позволяет избежать этой ситуации, сводя несколько ожидающих событий к одному. По умолчанию объекты Timer объединяют события.
Параметры:
flag — укажите false, чтобы отключить объединение

isCoalesce

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

setActionCommand

public void setActionCommand(String command)
Задаёт строку, которая будет передана в качестве команды действия в событиях ActionEvent, генерируемых этим таймером. Допустимо значение null.
Параметры:
command — команда действия
С версии:
1.6

getActionCommand

public String getActionCommand()
Возвращает строку, которая будет передана в качестве команды действия в событиях ActionEvent, генерируемых этим таймером. Может иметь значение null, которое также используется по умолчанию.
Возвращает:
команду действия, используемую при генерации событий
С версии:
1.6

start

public void start()
Запускает объект Timer, после чего он начинает отправлять своим обработчикам события действия.
См. также:
  • stop()

isRunning

public boolean isRunning()
Возвращает true, если объект Timer запущен.
Возвращает:
true, если объект Timer запущен, в противном случае — false
См. также:
  • start()

stop

public void stop()
Останавливает объект Timer, после чего он перестаёт отправлять своим обработчикам события действия.
См. также:
  • start()

restart

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

Сообщить об ошибке или предложить улучшение
Дополнительную справочную информацию по API и документацию для разработчиков см. в разделе Документация Java SE, содержащем более подробные описания для разработчиков, концептуальные обзоры, определения терминов, обходные решения и работающие примеры кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или её аффилированных лиц в США и других странах.
Авторские права © 1993, 2025, Oracle и/или её аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 1993, 2025, 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/25/docs/api/java.desktop/javax/swing/Timer.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API