Класс 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 есть две функции, которые могут сделать его немного проще использовать с графическими интерфейсами пользователя. Во-первых, его метафора обработки событий знакома программистам GUI и может упростить работу с потоком диспетчеризации событий. Во-вторых, автоматическое совместное использование потоков означает, что вам не нужно предпринимать специальных шагов, чтобы избежать создания слишком большого количества потоков. Вместо этого ваш таймер использует тот же поток, который используется для мигания курсора, отображения подсказок и т. д.
Вы можете найти дополнительную документацию и несколько примеров использования таймеров, посетив Как использовать таймеры, раздел в Руководстве Java. Для получения дополнительных примеров и помощи в выборе между этим классом Timer и java.util.Timer, см. Использование таймеров в приложениях Swing, статью в The Swing Connection.
Предупреждение: Сериализованные объекты этого класса не будут совместимы с будущими версиями Swing. Текущая поддержка сериализации подходит для краткосрочного хранения или RMI между приложениями, работающими на одной версии Swing. Начиная с версии 1.4, поддержка долгосрочного хранения всех JavaBeans™ была добавлена в пакет java.beans. Обратитесь к XMLEncoder.
- См. также:
java.util.Timer
Поля
| Модификатор и тип | Поле и описание |
|---|---|
protected EventListenerList |
listenerList |
Конструкторы
| Конструктор и описание |
|---|
Timer(int delay,
ActionListener listener) Создаёт |
Методы
| Модификатор и тип | Метод и описание |
|---|---|
void |
addActionListener(ActionListener listener) Добавляет обработчик событий действия в |
protected void |
fireActionPerformed(ActionEvent e) Уведомляет всех слушателей, которые проявили интерес к уведомлению об этом типе события. |
String |
getActionCommand() Возвращает строку, которая будет передана в качестве команды действия в |
ActionListener[] |
getActionListeners() Возвращает массив всех обработчиков событий действия, зарегистрированных в этом таймере. |
int |
getDelay() Возвращает задержку в миллисекундах между отправкой событий действия. |
int |
getInitialDelay() Возвращает начальную задержку таймера. |
<T extends EventListener> |
getListeners(Class<T> listenerType) Возвращает массив всех объектов, которые в данный момент зарегистрированы как |
static boolean |
getLogTimers() Возвращает |
boolean |
isCoalesce() Возвращает |
boolean |
isRepeats() Возвращает |
boolean |
isRunning() Возвращает |
void |
removeActionListener(ActionListener listener) Удаляет указанного обработчика событий действия из |
void |
restart() Перезапускает |
void |
setActionCommand(String command) Устанавливает строку, которая будет передана в качестве команды действия в |
void |
setCoalesce(boolean flag) Устанавливает, объединяет ли |
void |
setDelay(int delay) Устанавливает задержку между событиями |
void |
setInitialDelay(int initialDelay) Устанавливает начальную задержку |
static void |
setLogTimers(boolean flag) Включает или отключает журнал таймера. |
void |
setRepeats(boolean flag) Если |
void |
start() Запускает |
void |
stop() Останавливает |
Методы, унаследованные от класса 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) Создаёт таймер и инициализирует начальную задержку и задержку между событиями в Timer миллисекундах. Если 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)
Возвращает массив всех объектов, в настоящее время зарегистрированных как FooListener для данного Timer. FooListener регистрируются с помощью метода addFooListener.
Вы можете указать аргумент listenerType с использованием литерала класса, например FooListener.class. Например, вы можете запросить слушателей событий действия для экземпляра Timer следующим кодом:
ActionListener[] als = (ActionListener[])(t.getListeners(ActionListener.class));Если такие слушатели не существуют, этот метод возвращает пустой массив.
- Параметры:
-
listenerType- тип запрашиваемых слушателей; этот параметр должен указывать интерфейс, унаследованный отjava.util.EventListener - Возвращает:
- массив всех объектов, зарегистрированных как
FooListenerдля этого таймера, или пустой массив, если такие слушатели не были добавлены - Исключение:
-
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-trueдля включения логирования - См. также:
getLogTimers()
getLogTimers
public static boolean getLogTimers()
Возвращает true значение, если логирование включено.
- Возвращает:
-
trueзначение, если логирование включено; в противном случае, false - См. также:
setLogTimers(boolean)
setDelay
public void setDelay(int delay)
Устанавливает задержку между событиями таймера, количество миллисекунд между последовательными событиями действия. Это не влияет на начальную задержку, которую можно установить методом setInitialDelay.
- Параметры:
-
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- указываетfalseтаймеру остановиться после отправки первого события действия
isRepeats
public boolean isRepeats()
Возвращает true (по умолчанию), если таймер будет отправлять событие действия своим обработчикам несколько раз.
- См. также:
setRepeats(boolean)
setCoalesce
public void setCoalesce(boolean flag)
Устанавливает, будет ли таймер объединять несколько ожидающих событий запуска. Занятое приложение может не успевать за генерацией событий таймера, что приводит к очереди нескольких событий действия. При обработке приложение отправляет эти события одно за другим, заставляя слушателей таймера получать последовательность событий без задержек между ними. Объединение событий предотвращает эту ситуацию, сводя несколько ожидающих событий к одному событию. Таймеры объединяют события по умолчанию.
- Параметры:
-
flag- указываетfalseдля отключения объединения
isCoalesce
public boolean isCoalesce()
Возвращает 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 если таймер работает.
- См. также:
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.