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