Класс 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
- См. также:
Краткое описание полей
| Модификатор и тип | Поле | Описание |
|---|---|---|
protected EventListenerList |
listenerList |
Коллекция зарегистрированных обработчиков |
Краткое описание конструкторов
| Конструктор | Описание |
|---|---|
Timer |
Создаёт объект Timer и устанавливает для начальной задержки и интервала между событиями значение delay миллисекунд. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
void |
addActionListener |
Добавляет обработчик событий действия в Timer. |
protected void |
fireActionPerformed |
Уведомляет всех обработчиков, зарегистрировавших интерес к уведомлениям о событиях этого типа. |
String |
getActionCommand() |
Возвращает строку, которая будет передана в качестве команды действия в событиях ActionEvent, генерируемых этим таймером. |
ActionListener[] |
getActionListeners() |
Возвращает массив всех обработчиков событий действия, зарегистрированных в этом таймере. |
int |
getDelay() |
Возвращает задержку в миллисекундах между генерациями событий действия. |
int |
getInitialDelay() |
Возвращает начальную задержку объекта Timer. |
<T extends EventListener> |
getListeners |
Возвращает массив всех объектов, зарегистрированных в данный момент в качестве обработчиков FooListener для этого объекта Timer. |
static boolean |
getLogTimers() |
Возвращает true, если ведение журнала включено. |
boolean |
isCoalesce() |
Возвращает true, если объект Timer объединяет несколько ожидающих событий действия. |
boolean |
isRepeats() |
Возвращает true (значение по умолчанию), если объект Timer будет многократно отправлять своим обработчикам события действия. |
boolean |
isRunning() |
Возвращает true, если объект Timer запущен. |
void |
removeActionListener |
Удаляет указанный обработчик событий действия из Timer. |
void |
restart() |
Перезапускает объект Timer, отменяя все ожидающие срабатывания и запуская его с начальной задержкой. |
void |
setActionCommand |
Задаёт строку, которая будет передана в качестве команды действия в событиях ActionEvent, генерируемых этим таймером. |
void |
setCoalesce |
Задаёт, будет ли объект Timer объединять несколько ожидающих срабатываний ActionEvent. |
void |
setDelay |
Задаёт интервал между событиями для объекта Timer — число миллисекунд между последовательными событиями действия. |
void |
setInitialDelay |
Задаёт начальную задержку объекта Timer — время в миллисекундах, которое нужно выждать после запуска таймера перед генерацией первого события. |
static void |
setLogTimers |
Включает или отключает журнал таймера. |
void |
setRepeats |
Если flag имеет значение false, указывает объекту Timer отправить своим обработчикам только одно событие действия. |
void |
start() |
Запускает объект Timer, после чего он начинает отправлять своим обработчикам события действия. |
void |
stop() |
Останавливает объект Timer, после чего он перестаёт отправлять своим обработчикам события действия. |
Подробное описание полей
listenerList
protected EventListenerList listenerList
Подробное описание конструкторов
Timer
public Timer(int delay, ActionListener listener)
Timer и устанавливает для начальной задержки и интервала между событиями значение delay миллисекунд. Если значение delay меньше или равно нулю, таймер срабатывает сразу после запуска. Если listener не равно null, он регистрируется в таймере в качестве обработчика событий действия.- Параметры:
-
delay— начальная задержка и интервал между событиями в миллисекундах -
listener— начальный обработчик; может бытьnull - См. также:
Подробное описание методов
addActionListener
public void addActionListener(ActionListener listener)
Timer.- Параметры:
-
listener— добавляемый обработчик - См. также:
removeActionListener
public void removeActionListener(ActionListener listener)
Timer.- Параметры:
-
listener— удаляемый обработчик
getActionListeners
public ActionListener[] getActionListeners()
- Возвращает:
- все обработчики событий действия объекта-таймера
ActionListenerили пустой массив, если в данный момент обработчики событий действия не зарегистрированы - С версии:
- 1.4
- См. также:
fireActionPerformed
protected void fireActionPerformed(ActionEvent e)
- Параметры:
-
e— генерируемое событие действия - См. также:
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
- См. также:
setLogTimers
public static void setLogTimers(boolean flag)
System.out отправляется сообщение.- Параметры:
-
flag—trueдля включения ведения журнала - См. также:
getLogTimers
public static boolean getLogTimers()
true, если ведение журнала включено.- Возвращает:
-
true, если ведение журнала включено; в противном случае — false - См. также:
setDelay
public void setDelay(int delay)
Timer — число миллисекунд между последовательными событиями действия. Это не влияет на свойство начальной задержки, которое можно задать методом setInitialDelay.- Параметры:
-
delay— задержка в миллисекундах - См. также:
getDelay
public int getDelay()
- Возвращает:
- задержку в миллисекундах между генерациями событий действия
- См. также:
setInitialDelay
public void setInitialDelay(int initialDelay)
Timer — время в миллисекундах, которое нужно выждать после запуска таймера перед генерацией первого события. При создании это значение совпадает с интервалом между событиями, но затем становится независимым и не меняется при изменении интервала между событиями.- Параметры:
-
initialDelay— начальная задержка в миллисекундах - См. также:
getInitialDelay
public int getInitialDelay()
Timer.- Возвращает:
- начальную задержку объекта
Timerв миллисекундах - См. также:
setRepeats
public void setRepeats(boolean flag)
flag имеет значение false, указывает объекту Timer отправить своим обработчикам только одно событие действия.- Параметры:
-
flag— укажитеfalse, чтобы таймер остановился после отправки первого события действия
isRepeats
public boolean isRepeats()
true (значение по умолчанию), если объект Timer будет многократно отправлять своим обработчикам события действия.- Возвращает:
- true, если объект
Timerбудет многократно отправлять своим обработчикам события действия - См. также:
setCoalesce
public void setCoalesce(boolean flag)
Timer объединять несколько ожидающих срабатываний ActionEvent. Занятое приложение может не успевать обрабатывать генерируемые объектом Timer события, из-за чего в очередь может попасть несколько событий действия. При обработке приложение отправляет эти события одно за другим, в результате чего обработчики объекта Timer получают последовательность событий без задержки между ними. Объединение позволяет избежать этой ситуации, сводя несколько ожидающих событий к одному. По умолчанию объекты Timer объединяют события.- Параметры:
-
flag— укажитеfalse, чтобы отключить объединение
isCoalesce
public boolean isCoalesce()
true, если объект Timer объединяет несколько ожидающих событий действия.- Возвращает:
- true, если объект
Timerобъединяет несколько ожидающих событий действия - См. также:
setActionCommand
public void setActionCommand(String command)
ActionEvent, генерируемых этим таймером. Допустимо значение null.- Параметры:
-
command— команда действия - С версии:
- 1.6
getActionCommand
public String getActionCommand()
ActionEvent, генерируемых этим таймером. Может иметь значение null, которое также используется по умолчанию.- Возвращает:
- команду действия, используемую при генерации событий
- С версии:
- 1.6
start
public void start()
Timer, после чего он начинает отправлять своим обработчикам события действия.- См. также:
isRunning
public boolean isRunning()
true, если объект Timer запущен.- Возвращает:
- true, если объект
Timerзапущен, в противном случае — false - См. также:
stop
public void stop()
Timer, после чего он перестаёт отправлять своим обработчикам события действия.- См. также:
restart
public void restart()
Timer, отменяя все ожидающие срабатывания и запуская его с начальной задержкой.
© 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