Spec-Zone.ru › OpenJDK 25

Класс 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

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

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, 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/java/awt/MediaTracker.html

Spec-Zone.ru

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