Класс 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 |
Создает средство отслеживания мультимедийных данных для отслеживания изображений заданного компонента. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
void |
addImage |
Добавляет изображение в список изображений, отслеживаемых этим средством отслеживания мультимедийных данных. |
void |
addImage |
Добавляет масштабированное изображение в список изображений, отслеживаемых этим средством отслеживания мультимедийных данных. |
boolean |
checkAll() |
Проверяет, завершена ли загрузка всех изображений, отслеживаемых этим средством отслеживания мультимедийных данных. |
boolean |
checkAll |
Проверяет, завершена ли загрузка всех изображений, отслеживаемых этим средством отслеживания мультимедийных данных. |
boolean |
checkID |
Проверяет, завершена ли загрузка всех изображений с указанным идентификатором, отслеживаемых этим средством отслеживания мультимедийных данных. |
boolean |
checkID |
Проверяет, завершена ли загрузка всех изображений с указанным идентификатором, отслеживаемых этим средством отслеживания мультимедийных данных. |
Object[] |
getErrorsAny() |
Возвращает список всех мультимедийных объектов, при загрузке которых произошла ошибка. |
Object[] |
getErrorsID |
Возвращает список мультимедийных объектов с указанным идентификатором, при загрузке которых произошла ошибка. |
boolean |
isErrorAny() |
Проверяет наличие ошибок у всех изображений. |
boolean |
isErrorID |
Проверяет наличие ошибок у всех изображений с указанным идентификатором, отслеживаемых этим средством отслеживания мультимедийных данных. |
void |
removeImage |
Удаляет указанное изображение из этого средства отслеживания мультимедийных данных. |
void |
removeImage |
Удаляет указанное изображение из указанного идентификатора отслеживания этого средства отслеживания мультимедийных данных. |
void |
removeImage |
Удаляет из этого средства отслеживания мультимедийных данных указанное изображение с заданными шириной, высотой и идентификатором. |
int |
statusAll |
Вычисляет и возвращает побитовое включающее ИЛИ состояний всех мультимедийных объектов, отслеживаемых этим средством отслеживания мультимедийных данных. |
int |
statusID |
Вычисляет и возвращает побитовое включающее ИЛИ состояний всех мультимедийных объектов с указанным идентификатором, отслеживаемых этим средством отслеживания мультимедийных данных. |
void |
waitForAll() |
Начинает загрузку всех изображений, отслеживаемых этим средством отслеживания мультимедийных данных. |
boolean |
waitForAll |
Начинает загрузку всех изображений, отслеживаемых этим средством отслеживания мультимедийных данных. |
void |
waitForID |
Начинает загрузку всех изображений с указанным идентификатором, отслеживаемых этим средством отслеживания мультимедийных данных. |
boolean |
waitForID |
Начинает загрузку всех изображений с указанным идентификатором, отслеживаемых этим средством отслеживания мультимедийных данных. |
Подробное описание полей
LOADING
public static final int LOADING
- См. также:
ABORTED
public static final int ABORTED
- См. также:
ERRORED
public static final int ERRORED
- См. также:
COMPLETE
public static final int COMPLETE
- См. также:
Подробное описание конструкторов
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
public boolean checkAll(boolean load)
Если значение флага load равно true, этот метод начинает загрузку изображений, загрузка которых еще не началась.
Если при загрузке или масштабировании изображения произошла ошибка, считается, что загрузка этого изображения завершена. Для проверки ошибок используйте методы isErrorAny и isErrorID.
- Параметры:
-
load— если значение равноtrue, начать загрузку изображений, загрузка которых еще не началась - Возвращает:
-
true, если загрузка всех изображений завершена, прервана или завершилась ошибкой; в противном случае —false - См. также:
isErrorAny
public boolean isErrorAny()
- Возвращает:
-
true, если при загрузке любого изображения, отслеживаемого этим средством отслеживания мультимедийных данных, произошла ошибка; в противном случае —false - См. также:
getErrorsAny
public Object[] getErrorsAny()
- Возвращает:
- массив мультимедийных объектов, отслеживаемых этим средством отслеживания мультимедийных данных, при загрузке которых произошла ошибка, или
null, если ошибок нет - См. также:
waitForAll
public void waitForAll() throws InterruptedException
Если при загрузке или масштабировании изображения произошла ошибка, считается, что загрузка этого изображения завершена. Для проверки ошибок используйте методы isErrorAny или isErrorID.
- Выбрасывает:
-
InterruptedException— если какой-либо поток прервал выполнение этого потока - См. также:
waitForAll
public boolean waitForAll(long ms) throws InterruptedException
ms. Если при загрузке или масштабировании изображения произошла ошибка, считается, что загрузка этого изображения завершена. Для проверки ошибок используйте методы isErrorAny или isErrorID.
- Параметры:
-
ms— количество миллисекунд ожидания завершения загрузки - Возвращает:
-
true, если все изображения успешно загружены; в противном случае —false - Выбрасывает:
-
InterruptedException— если какой-либо поток прервал выполнение этого потока. - См. также:
statusAll
public int statusAll(boolean load)
Возможные флаги, определенные классом MediaTracker: LOADING, ABORTED, ERRORED и COMPLETE. Состояние изображения, загрузка которого еще не началась, равно нулю.
Если значение load равно true, этот метод начинает загрузку изображений, загрузка которых еще не началась.
- Параметры:
-
load— если значение равноtrue, начать загрузку изображений, загрузка которых еще не началась - Возвращает:
- побитовое включающее ИЛИ состояний всех отслеживаемых мультимедийных объектов
- См. также:
checkID
public boolean checkID(int id)
Этот метод не начинает загрузку изображений, если она еще не выполняется.
Если при загрузке или масштабировании изображения произошла ошибка, считается, что загрузка этого изображения завершена. Для проверки ошибок используйте методы isErrorAny или isErrorID.
- Параметры:
-
id— идентификатор изображений для проверки - Возвращает:
-
true, если загрузка всех изображений завершена, прервана или завершилась ошибкой; в противном случае —false - См. также:
checkID
public boolean checkID(int id, boolean load)
Если значение флага load равно true, этот метод начинает загрузку изображений, загрузка которых еще не началась.
Если при загрузке или масштабировании изображения произошла ошибка, считается, что загрузка этого изображения завершена. Для проверки ошибок используйте методы isErrorAny или isErrorID.
- Параметры:
-
id— идентификатор изображений для проверки -
load— если значение равноtrue, начать загрузку изображений, загрузка которых еще не началась - Возвращает:
-
true, если загрузка всех изображений завершена, прервана или завершилась ошибкой; в противном случае —false - См. также:
isErrorID
public boolean isErrorID(int id)
- Параметры:
-
id— идентификатор изображений для проверки - Возвращает:
-
true, если при загрузке любого изображения с указанным идентификатором произошла ошибка; в противном случае —false - См. также:
getErrorsID
public Object[] getErrorsID(int id)
- Параметры:
-
id— идентификатор изображений для проверки - Возвращает:
- массив мультимедийных объектов с указанным идентификатором, отслеживаемых этим средством отслеживания мультимедийных данных, при загрузке которых произошла ошибка, или
null, если ошибок нет - См. также:
waitForID
public void waitForID(int id) throws InterruptedException
Если при загрузке или масштабировании изображения произошла ошибка, считается, что загрузка этого изображения завершена. Для проверки ошибок используйте методы isErrorAny и isErrorID.
- Параметры:
-
id— идентификатор изображений для проверки - Выбрасывает:
-
InterruptedException— если какой-либо поток прервал выполнение этого потока. - См. также:
waitForID
public boolean waitForID(int id, long ms) throws InterruptedException
ms. Если при загрузке или масштабировании изображения произошла ошибка, считается, что загрузка этого изображения завершена. Для проверки ошибок используйте методы statusID, isErrorID и isErrorAny.
- Параметры:
-
id— идентификатор изображений для проверки -
ms— время ожидания завершения загрузки в миллисекундах - Возвращает:
-
true, если загрузка завершилась вовремя; в противном случае —false - Выбрасывает:
-
InterruptedException— если какой-либо поток прервал выполнение этого потока. - См. также:
statusID
public int statusID(int id, boolean load)
Возможные флаги, определенные классом MediaTracker: LOADING, ABORTED, ERRORED и COMPLETE. Состояние изображения, загрузка которого еще не началась, равно нулю.
Если значение load равно true, этот метод начинает загрузку изображений, загрузка которых еще не началась.
- Параметры:
-
id— идентификатор изображений для проверки -
load— если значение равноtrue, начать загрузку изображений, загрузка которых еще не началась - Возвращает:
- побитовое включающее ИЛИ состояний всех отслеживаемых мультимедийных объектов с указанным идентификатором
- См. также:
removeImage
public void removeImage(Image image)
- Параметры:
-
image— удаляемое изображение - Начиная с версии:
- 1.1
- См. также:
removeImage
public void removeImage(Image image, int id)
Image, отслеживаемые с указанным идентификатором, независимо от масштаба.- Параметры:
-
image— удаляемое изображение -
id— идентификатор отслеживания, из которого нужно удалить изображение - Начиная с версии:
- 1.1
- См. также:
removeImage
public void removeImage(Image image, int id, int width, int height)
- Параметры:
-
image— удаляемое изображение -
id— идентификатор отслеживания, из которого нужно удалить изображение -
width— удаляемая ширина (−1 для изображения без масштабирования) -
height— удаляемая высота (−1 для изображения без масштабирования) - Начиная с версии:
- 1.1
- См. также:
© 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