Spec-Zone.ru › OpenJDK 27

Класс MediaTracker

java.lang.Object
java.awt.MediaTracker
Все реализованные интерфейсы:
Serializable
public class MediaTracker extends Object implements Serializable
Класс MediaTracker — это служебный класс для отслеживания состояния нескольких медиаобъектов. Медиаобъекты могут включать аудиоклипы и изображения, хотя в настоящее время поддерживаются только изображения.

Чтобы использовать средство отслеживания медиаобъектов, создайте экземпляр MediaTracker и вызовите его метод addImage для каждого отслеживаемого изображения. Кроме того, каждому изображению можно назначить уникальный идентификатор. Этот идентификатор определяет порядок приоритета загрузки изображений. Его также можно использовать для выделения уникальных подмножеств изображений, ожидать загрузки которых можно независимо друг от друга. Изображения с меньшим идентификатором загружаются раньше изображений с большим номером идентификатора.

Отслеживание анимированного изображения не всегда может быть полезным из-за многоэтапной загрузки и отрисовки анимации, но такая возможность поддерживается. MediaTracker считает анимированное изображение полностью загруженным, когда полностью загружен первый кадр. В этот момент MediaTracker оповещает все ожидающие потоки о том, что изображение загружено полностью. Если после завершения загрузки первого кадра ни один ImageObserver не отслеживает изображение, оно может очистить себя для экономии ресурсов (см. Image.flush()).

Пример использования MediaTracker:

import java.awt.Color;
import java.awt.EventQueue;
import java.awt.Frame;
import java.awt.Image;
import java.awt.Graphics;
import java.awt.MediaTracker;
import java.awt.Panel;
import java.awt.Toolkit;

public class MediaTrackerExample extends Panel implements Runnable {
     MediaTracker tracker;
     Image bg;
     Image anim[] = new Image[5];
     int index;
     Thread animator;

     // Get the images for the background (id == 0)
     // and the animation frames (id == 1)
     // and add them to the MediaTracker
     public static void main(String[] args) throws Exception {
         MediaTrackerExample mte = new MediaTrackerExample();
         EventQueue.invokeAndWait(() -> {
             Frame frame = new Frame("MediaTrackerExample");
             frame.setSize(400, 400);
             frame.add(mte);
             frame.setVisible(true);
         });
         mte.startAnimation();
     }

     public MediaTrackerExample() {
         Toolkit tk = Toolkit.getDefaultToolkit();
         tracker = new MediaTracker(this);
         // Note : actual images not provided as part of this code example
         bg = tk.getImage("background.gif");
         tracker.addImage(bg, 0);
         for (int i = 0; i < 5; i++) {
             anim[i] = tk.getImage("anim" + i + ".gif");
             tracker.addImage(anim[i], 1);
         }
     }

     public void startAnimation() {
         animator = new Thread(this);
         animator.start();
     }

     // Run the animation thread.
     // First wait for the background image to fully load
     // and paint.  Then wait for all of the animation
     // frames to finish loading. Finally, loop and
     // increment the animation frame index.
     public void run() {
         try {
             tracker.waitForID(0);
             tracker.waitForID(1);
         } catch (InterruptedException e) {
             return;
         }
         Thread me = Thread.currentThread();
         while (animator == me) {
             try {
                 Thread.sleep(100);
             } catch (InterruptedException e) {
                 break;
             }
             synchronized (this) {
                 index++;
                 if (index >= anim.length) {
                     index = 0;
                 }
             }
             repaint();
         }
     }

     // The background image fills the frame so we
     // don't need to clear the component background on repaints.
     // Just call the paint method.
     public void update(Graphics g) {
         paint(g);
     }

     // Paint a large red rectangle if there are any errors
     // loading the images.  Otherwise always paint the
     // background so that it appears incrementally as it
     // is loading.  Finally, only paint the current animation
     // frame if all of the frames (id == 1) are done loading,
     // so that we don't get partial animations.
     public void paint(Graphics g) {
         if ((tracker.statusAll(false) & MediaTracker.ERRORED) != 0) {
             g.setColor(Color.red);
             g.fillRect(0, 0, getSize().width, getSize().height);
             return;
         }
         g.drawImage(bg, 0, 0, this);
         if (tracker.statusID(1, false) == MediaTracker.COMPLETE) {
             g.drawImage(anim[index], 10, 10, this);
         }
     }
}
Начиная с:
1.0
См. также:
  • Сериализованная форма

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

Модификатор и тип Поле Описание
static final int ABORTED
Флаг, указывающий, что загрузка медиаобъекта была прервана.
static final int COMPLETE
Флаг, указывающий, что загрузка медиаобъекта успешно завершена.
static final int ERRORED
Флаг, указывающий, что при загрузке медиаобъекта произошла ошибка.
static final int LOADING
Флаг, указывающий, что медиаобъект в данный момент загружается.

Краткое описание конструкторов

Конструктор Описание
MediaTracker(Component comp)
Создает средство отслеживания медиаобъектов для отслеживания изображений заданного компонента.

Краткое описание методов

Модификатор и тип Метод Описание
void addImage(Image image, int id)
Добавляет изображение в список изображений, отслеживаемых этим средством отслеживания медиаобъектов.
void addImage(Image image, int id, int w, int h)
Добавляет изображение с заданным масштабом в список изображений, отслеживаемых этим средством отслеживания медиаобъектов.
boolean checkAll()
Проверяет, завершена ли загрузка всех изображений, отслеживаемых этим средством отслеживания медиаобъектов.
boolean checkAll(boolean load)
Проверяет, завершена ли загрузка всех изображений, отслеживаемых этим средством отслеживания медиаобъектов.
boolean checkID(int id)
Проверяет, завершена ли загрузка всех изображений, отслеживаемых этим средством отслеживания медиаобъектов и помеченных заданным идентификатором.
boolean checkID(int id, boolean load)
Проверяет, завершена ли загрузка всех изображений, отслеживаемых этим средством отслеживания медиаобъектов и помеченных заданным идентификатором.
Object[] getErrorsAny()
Возвращает список всех медиаобъектов, при обработке которых произошла ошибка.
Object[] getErrorsID(int id)
Возвращает список медиаобъектов с заданным идентификатором, при обработке которых произошла ошибка.
boolean isErrorAny()
Проверяет состояние ошибок всех изображений.
boolean isErrorID(int id)
Проверяет состояние ошибок всех изображений, отслеживаемых этим средством отслеживания медиаобъектов и имеющих заданный идентификатор.
void removeImage(Image image)
Удаляет заданное изображение из этого средства отслеживания медиаобъектов.
void removeImage(Image image, int id)
Удаляет заданное изображение из записи с указанным идентификатором отслеживания этого средства отслеживания медиаобъектов.
void removeImage(Image image, int id, int width, int height)
Удаляет из этого средства отслеживания медиаобъектов заданное изображение с указанными шириной, высотой и идентификатором.
int statusAll(boolean load)
Вычисляет и возвращает побитовое включающее ИЛИ состояний всех медиаобъектов, отслеживаемых этим средством отслеживания медиаобъектов.
int statusID(int id, boolean load)
Вычисляет и возвращает побитовое включающее ИЛИ состояний всех медиаобъектов с заданным идентификатором, отслеживаемых этим средством отслеживания медиаобъектов.
void waitForAll()
Начинает загрузку всех изображений, отслеживаемых этим средством отслеживания медиаобъектов.
boolean waitForAll(long ms)
Начинает загрузку всех изображений, отслеживаемых этим средством отслеживания медиаобъектов.
void waitForID(int id)
Начинает загрузку всех изображений с заданным идентификатором, отслеживаемых этим средством отслеживания медиаобъектов.
boolean waitForID(int id, long ms)
Начинает загрузку всех изображений с заданным идентификатором, отслеживаемых этим средством отслеживания медиаобъектов.

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

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Модификатор и тип Метод Описание
protected Object clone()
Создает и возвращает копию этого объекта.
boolean equals(Object obj)
Указывает, является ли другой объект «равным» этому объекту.
protected void finalize()
Устарело, будет удалено: этот элемент API подлежит удалению в будущей версии.
Финализация объявлена устаревшей и подлежит удалению в одном из будущих выпусков.
final Class<?> getClass()
Возвращает класс времени выполнения этого объекта Object.
int hashCode()
Возвращает хеш-код этого объекта.
final void notify()
Пробуждает один поток, ожидающий на мониторе этого объекта.
final void notifyAll()
Пробуждает все потоки, ожидающие на мониторе этого объекта.
String toString()
Возвращает строковое представление объекта.
final void wait()
Заставляет текущий поток ожидать пробуждения, обычно посредством оповещения или прерывания.
final void wait(long timeoutMillis)
Заставляет текущий поток ожидать пробуждения, обычно посредством оповещения или прерывания, либо до истечения заданного промежутка реального времени.
final void wait(long timeoutMillis, int nanos)
Заставляет текущий поток ожидать пробуждения, обычно посредством оповещения или прерывания, либо до истечения заданного промежутка реального времени.

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

LOADING

public static final int LOADING
Флаг, указывающий, что в данный момент выполняется загрузка медиаобъекта.
См. также:
  • statusAll(boolean)
  • statusID(int, boolean)
  • Значения констант полей

ABORTED

public static final int ABORTED
Флаг, указывающий, что загрузка медиаобъекта была прервана.
См. также:
  • statusAll(boolean)
  • statusID(int, boolean)
  • Значения констант полей

ERRORED

public static final int ERRORED
Флаг, указывающий, что при загрузке медиаобъекта произошла ошибка.
См. также:
  • statusAll(boolean)
  • statusID(int, boolean)
  • Значения констант полей

COMPLETE

public static final int COMPLETE
Флаг, указывающий, что загрузка медиаобъекта завершилась успешно.
См. также:
  • statusAll(boolean)
  • statusID(int, boolean)
  • Значения констант полей

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

MediaTracker

public MediaTracker(Component comp)
Создает средство отслеживания медиаобъектов для отслеживания изображений заданного компонента.
Параметры:
comp — компонент, на котором в конечном итоге будут отображаться изображения

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

addImage

public void addImage(Image image, int id)
Добавляет изображение в список изображений, отслеживаемых этим средством отслеживания медиаобъектов. В конечном итоге изображение будет отображено в размере по умолчанию (без масштабирования).
Параметры:
image — изображение для отслеживания
id — идентификатор, используемый для отслеживания этого изображения

addImage

public void addImage(Image image, int id, int w, int h)
Добавляет масштабированное изображение в список изображений, отслеживаемых этим средством отслеживания медиаобъектов. В конечном итоге изображение будет отображено с указанными шириной и высотой.
Параметры:
image — изображение для отслеживания
id — идентификатор, который можно использовать для отслеживания этого изображения
w — ширина, с которой отображается изображение
h — высота, с которой отображается изображение

checkAll

public boolean checkAll()
Проверяет, завершилась ли загрузка всех изображений, отслеживаемых этим средством отслеживания медиаобъектов.

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

Если при загрузке или масштабировании изображения произошла ошибка, считается, что загрузка этого изображения завершена. Для проверки ошибок используйте методы isErrorAny или isErrorID.

Возвращает:
true, если загрузка всех изображений завершена, прервана или завершилась ошибкой; в противном случае — false
См. также:
  • checkAll(boolean)
  • checkID(int)
  • isErrorAny()
  • isErrorID(int)

checkAll

public boolean checkAll(boolean load)
Проверяет, завершилась ли загрузка всех изображений, отслеживаемых этим средством отслеживания медиаобъектов.

Если значение флага load равно true, этот метод запускает загрузку всех изображений, загрузка которых еще не началась.

Если при загрузке или масштабировании изображения произошла ошибка, считается, что загрузка этого изображения завершена. Для проверки ошибок используйте методы isErrorAny и isErrorID.

Параметры:
load — если true, запустить загрузку всех изображений, загрузка которых еще не началась
Возвращает:
true, если загрузка всех изображений завершена, прервана или завершилась ошибкой; в противном случае — false
См. также:
  • checkID(int)
  • checkAll()
  • isErrorAny()
  • isErrorID(int)

isErrorAny

public boolean isErrorAny()
Проверяет состояние ошибки для всех изображений.
Возвращает:
true, если при загрузке какого-либо изображения, отслеживаемого этим средством отслеживания медиаобъектов, произошла ошибка; в противном случае — false
См. также:
  • isErrorID(int)
  • getErrorsAny()

getErrorsAny

public Object[] getErrorsAny()
Возвращает список всех медиаобъектов, при обработке которых произошла ошибка.
Возвращает:
массив медиаобъектов, отслеживаемых этим средством отслеживания медиаобъектов, при обработке которых произошла ошибка, или null, если таких объектов нет
См. также:
  • isErrorAny()
  • getErrorsID(int)

waitForAll

public void waitForAll() throws InterruptedException
Запускает загрузку всех изображений, отслеживаемых этим средством отслеживания медиаобъектов. Этот метод ожидает завершения загрузки всех отслеживаемых изображений.

Если при загрузке или масштабировании изображения произошла ошибка, считается, что загрузка этого изображения завершена. Для проверки ошибок используйте методы isErrorAny или isErrorID.

Выбрасывает:
InterruptedException — если какой-либо поток прервал текущий поток
См. также:
  • waitForID(int)
  • waitForAll(long)
  • isErrorAny()
  • isErrorID(int)

waitForAll

public boolean waitForAll(long ms) throws InterruptedException
Запускает загрузку всех изображений, отслеживаемых этим средством отслеживания медиаобъектов. Этот метод ожидает завершения загрузки всех отслеживаемых изображений или истечения времени в миллисекундах, указанного в аргументе ms.

Если при загрузке или масштабировании изображения произошла ошибка, считается, что загрузка этого изображения завершена. Для проверки ошибок используйте методы isErrorAny или isErrorID.

Параметры:
ms — количество миллисекунд ожидания завершения загрузки
Возвращает:
true, если все изображения успешно загружены; в противном случае — false
Выбрасывает:
InterruptedException — если какой-либо поток прервал текущий поток.
См. также:
  • waitForID(int)
  • isErrorAny()
  • isErrorID(int)

statusAll

public int statusAll(boolean load)
Вычисляет и возвращает побитовое включающее ИЛИ статусов всех медиаобъектов, отслеживаемых этим средством отслеживания медиаобъектов.

Возможные флаги, определенные классом MediaTracker: LOADING, ABORTED, ERRORED и COMPLETE. Статус изображения, загрузка которого еще не началась, равен нулю.

Если значение load равно true, этот метод запускает загрузку всех изображений, загрузка которых еще не началась.

Параметры:
load — если true, запустить загрузку всех изображений, загрузка которых еще не началась
Возвращает:
побитовое включающее ИЛИ статусов всех отслеживаемых медиаобъектов
См. также:
  • statusID(int, boolean)
  • LOADING
  • ABORTED
  • ERRORED
  • COMPLETE

checkID

public boolean checkID(int id)
Проверяет, завершилась ли загрузка всех изображений, отслеживаемых этим средством отслеживания медиаобъектов и помеченных указанным идентификатором.

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

Если при загрузке или масштабировании изображения произошла ошибка, считается, что загрузка этого изображения завершена. Для проверки ошибок используйте методы isErrorAny или isErrorID.

Параметры:
id — идентификатор изображений для проверки
Возвращает:
true, если загрузка всех изображений завершена, прервана или завершилась ошибкой; в противном случае — false
См. также:
  • checkID(int, boolean)
  • checkAll()
  • isErrorAny()
  • isErrorID(int)

checkID

public boolean checkID(int id, boolean load)
Проверяет, завершилась ли загрузка всех изображений, отслеживаемых этим средством отслеживания медиаобъектов и помеченных указанным идентификатором.

Если значение флага load равно true, этот метод запускает загрузку всех изображений, загрузка которых еще не началась.

Если при загрузке или масштабировании изображения произошла ошибка, считается, что загрузка этого изображения завершена. Для проверки ошибок используйте методы isErrorAny или isErrorID.

Параметры:
id — идентификатор изображений для проверки
load — если true, запустить загрузку всех изображений, загрузка которых еще не началась
Возвращает:
true, если загрузка всех изображений завершена, прервана или завершилась ошибкой; в противном случае — false
См. также:
  • checkID(int)
  • checkAll()
  • isErrorAny()
  • isErrorID(int)

isErrorID

public boolean isErrorID(int id)
Проверяет состояние ошибки для всех изображений с указанным идентификатором, отслеживаемых этим средством отслеживания медиаобъектов.
Параметры:
id — идентификатор изображений для проверки
Возвращает:
true, если при загрузке какого-либо изображения с указанным идентификатором произошла ошибка; в противном случае — false
См. также:
  • isErrorAny()
  • getErrorsID(int)

getErrorsID

public Object[] getErrorsID(int id)
Возвращает список медиаобъектов с указанным идентификатором, при обработке которых произошла ошибка.
Параметры:
id — идентификатор изображений для проверки
Возвращает:
массив медиаобъектов с указанным идентификатором, отслеживаемых этим средством отслеживания медиаобъектов, при обработке которых произошла ошибка, или null, если таких объектов нет
См. также:
  • isErrorID(int)
  • isErrorAny()
  • getErrorsAny()

waitForID

public void waitForID(int id) throws InterruptedException
Запускает загрузку всех изображений с указанным идентификатором, отслеживаемых этим средством отслеживания медиаобъектов. Этот метод ожидает завершения загрузки всех изображений с указанным идентификатором.

Если при загрузке или масштабировании изображения произошла ошибка, считается, что загрузка этого изображения завершена. Для проверки ошибок используйте методы isErrorAny и isErrorID.

Параметры:
id — идентификатор изображений для проверки
Выбрасывает:
InterruptedException — если какой-либо поток прервал текущий поток.
См. также:
  • waitForAll()
  • isErrorAny()
  • isErrorID(int)

waitForID

public boolean waitForID(int id, long ms) throws InterruptedException
Запускает загрузку всех изображений с указанным идентификатором, отслеживаемых этим средством отслеживания медиаобъектов. Этот метод ожидает завершения загрузки всех изображений с указанным идентификатором или истечения времени в миллисекундах, указанного в аргументе ms.

Если при загрузке или масштабировании изображения произошла ошибка, считается, что загрузка этого изображения завершена. Для проверки ошибок используйте методы statusID, isErrorID и isErrorAny.

Параметры:
id — идентификатор изображений для проверки
ms — время ожидания завершения загрузки в миллисекундах
Возвращает:
true, если загрузка завершилась вовремя; в противном случае — false
Выбрасывает:
InterruptedException — если какой-либо поток прервал текущий поток.
См. также:
  • waitForAll()
  • waitForID(int)
  • statusID(int, boolean)
  • isErrorAny()
  • isErrorID(int)

statusID

public int statusID(int id, boolean load)
Вычисляет и возвращает побитовое включающее ИЛИ статусов всех медиаобъектов с указанным идентификатором, отслеживаемых этим средством отслеживания медиаобъектов.

Возможные флаги, определенные классом MediaTracker: LOADING, ABORTED, ERRORED и COMPLETE. Статус изображения, загрузка которого еще не началась, равен нулю.

Если значение load равно true, этот метод запускает загрузку всех изображений, загрузка которых еще не началась.

Параметры:
id — идентификатор изображений для проверки
load — если true, запустить загрузку всех изображений, загрузка которых еще не началась
Возвращает:
побитовое включающее ИЛИ статусов всех отслеживаемых медиаобъектов с указанным идентификатором
См. также:
  • statusAll(boolean)
  • LOADING
  • ABORTED
  • ERRORED
  • COMPLETE

removeImage

public void removeImage(Image image)
Удаляет указанное изображение из этого средства отслеживания медиаобъектов. Удаляются все экземпляры указанного изображения независимо от масштаба или идентификатора.
Параметры:
image — изображение для удаления
Начиная с версии:
1.1
См. также:
  • removeImage(java.awt.Image, int)
  • removeImage(java.awt.Image, int, int, int)

removeImage

public void removeImage(Image image, int id)
Удаляет указанное изображение из указанного идентификатора отслеживания этого средства отслеживания медиаобъектов. Удаляются все экземпляры Image, отслеживаемые с указанным идентификатором, независимо от масштаба.
Параметры:
image — изображение для удаления
id — идентификатор отслеживания, из которого нужно удалить изображение
Начиная с версии:
1.1
См. также:
  • removeImage(java.awt.Image)
  • removeImage(java.awt.Image, int, int, int)

removeImage

public void removeImage(Image image, int id, int width, int height)
Удаляет из этого средства отслеживания медиаобъектов указанное изображение с заданными шириной, высотой и идентификатором. Удаляется только указанный экземпляр (включая его дубликаты).
Параметры:
image — изображение для удаления
id — идентификатор отслеживания, из которого нужно удалить изображение
width — ширина удаляемого изображения (-1 для изображения без масштабирования)
height — высота удаляемого изображения (-1 для изображения без масштабирования)
Начиная с версии:
1.1
См. также:
  • removeImage(java.awt.Image)
  • removeImage(java.awt.Image, int)

Сообщить об ошибке или предложить улучшение
Дополнительную справочную информацию по API и документацию для разработчиков см. в документации Java SE, которая содержит более подробные описания для разработчиков, включая концептуальные обзоры, определения терминов, обходные решения и рабочие примеры кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или ее аффилированных лиц в США и других странах.
Авторское право © 1993, 2026, 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.

Spec-Zone.ru

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