Класс 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.
Предупреждение: Сериализованные объекты этого класса не будут совместимы с будущими выпусками Swing. Текущая поддержка сериализации подходит для краткосрочного хранения или RMI между приложениями, использующими одну и ту же версию Swing. Начиная с версии 1.4, поддержка долгосрочного хранения всех компонентов JavaBeans была добавлена в пакет java.beans. Обратитесь к 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)
delay миллисекундах. Если delay меньше или равно нулю, таймер срабатывает сразу после запуска. Если listener не null, он регистрируется как обработчик событий таймера.- Параметры:
-
delay- миллисекунды для начальной и интервальной задержки -
listener- начальный слушатель; может бытьnull - См. также:
Подробное описание методов
addActionListener
public void addActionListener(ActionListener listener)
- Параметры:
-
listener- слушатель для добавления - См. также:
removeActionListener
public void removeActionListener(ActionListener listener)
- Параметры:
-
listener- слушатель для удаления
getActionListeners
public ActionListener[] getActionListeners()
- Возвращает:
- все обработчики событий таймера или пустой массив, если обработчики не зарегистрированы
- С:
- 1.4
- См. также:
fireActionPerformed
protected void fireActionPerformed(ActionEvent e)
- Параметры:
-
e- событие для уведомления - См. также:
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
- См. также:
setLogTimers
public static void setLogTimers(boolean flag)
System.out при каждом срабатывании таймера.- Параметры:
-
flag- значение для включения логирования - См. также:
getLogTimers
public static boolean getLogTimers()
- Возвращает:
-
trueесли логирование включено; в противном случае, false - См. также:
setDelay
public void setDelay(int delay)
setInitialDelay.- Параметры:
-
delay- задержка в миллисекундах - См. также:
getDelay
public int getDelay()
- Возвращает:
- задержка между событиями в миллисекундах
- См. также:
setInitialDelay
public void setInitialDelay(int initialDelay)
- Параметры:
-
initialDelay- начальная задержка в миллисекундах - См. также:
getInitialDelay
public int getInitialDelay()
- Возвращает:
- начальная задержка таймера в миллисекундах
- См. также:
setRepeats
public void setRepeats(boolean flag)
flag равно false, таймер отправит только одно событие своим слушателям.- Параметры:
-
flag- значение для остановки таймера после отправки первого события
isRepeats
public boolean isRepeats()
- Возвращает:
- true, если таймер будет отправлять событие слушателям многократно
- См. также:
setCoalesce
public void setCoalesce(boolean flag)
- Параметры:
-
flag- значение для отключения слияния событий
isCoalesce
public boolean isCoalesce()
- Возвращает:
- true, если таймер сливает несколько ожидающих событий
- См. также:
УстановитьКомандуДействия
public void setActionCommand(String command)
ActionEvent является допустимым.- Параметры:
-
command- команда действия - С:
- 1.6
ПолучитьКомандуДействия
public String getActionCommand()
ActionEvent, что также является значением по умолчанию.- Возвращает:
- используемая команда действия при срабатывании событий
- С:
- 1.6
Запустить
public void start()
Timer, вызывая отправку событий действия его слушателям.- См. также:
Работает
public boolean isRunning()
true, если Timer запущен.- Возвращает:
- true, если
Timerзапущен, false в противном случае - См. также:
Остановить
public void stop()
Timer, прекращая отправку событий действия его слушателям.- См. также:
Перезапустить
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://download.java.net/java/early_access/jdk24/docs/api/java.desktop/javax/swing/Timer.html