Слежение за процессом загрузки
Если вы хотя бы раз видели, как изображение загружается из Internet, то заметили, что оно появляется на экране по частям по мере загрузки. Это происходит в том случае, когда системное свойство awt.image. incrementalDraw имеет значение true.
При поступлении каждой порции изображения браузер вызывает логический метод imageUpdate () интерфейса ImageObserver. Аргументы этого метода содержат информацию о процессе загрузки изображения img. Рассмотрим их:
imageUpdate(Image img, int status, int x, int y, int width, int height);
Аргумент status содержит информацию о загрузке в виде одного целого числа, которое можно сравить со следующими константами интерфейса
ImageObserver:
WIDTH
— ширина уже загруженной части изображения известна, и может быть получена из аргумента width;
HEIGHT
— высота уже загруженной части изображения известна, и может быть получена из аргумента height;'
PROPERTIES
— свойства изображения уже известны, их можно получить методом getProperties{) класса Image;
SOMEBITS
— получены пикселы, достаточные для рисования масштабированной версии изображения; аргументы x, y, width, height определены;
FRAMEBITS
— получен следующий кадр изображения, содержащего несколько кадров; аргументы x, y, width, height не определены;
ALLBITS
— все изображение получено, аргументы x, y, width, height не содержат информации;
ERROR
— загрузка прекращена, рисование прервано, определен бит
ABORT
;
ABORT
— загрузка прервана, рисование приостановлено до прихода следующей порции изображения.
Вы можете переопределить этот метод в своем апплете и использовать его аргументы для слежения за процессом загрузки и определения момента полной загрузки.
Другой способ отследить окончание загрузки — воспользоваться методами класса MediaTracker. Они позволяют проверить, не окончена ли загрузка, или приостановить работу апплета до окончания загрузки. Один экземпляр класса MediaTracker может следить за загрузкой нескольких зарегистрированных в нем изображений.