Загрузка изображения в апплет
Класс Image обеспечивает поддержку работы с изображениями.
Простейший способ вывода изображения в апплет состоит из 2 этапов:
- Загрузить изображение в обьект класса Image ,
- Вывести изображение на экран.
1. Для загрузки изображения используется метод getImage класса Applet . Метод имеет следующий формат:
Image getImage(URL адрес, String имя);
Здесь адрес указывает адрес в Интернете, где находится требуемый файл изображения, имя указывает имя этого файла.
Чаще всего Вы будете загружать изображение, находящееся в Вашей странице. Тогда можно указать метод getDocumentBase() , который возвращает ссылку на страницу, содержащую апплет.
Загружают изображение обычно при перекрытии метода init() .
2. Для вывода изображения на экран используется метод drawImage класса Graphics . Метод имеет следующий формат:
boolean drawImage(Image обьект, XBegin, YBegin, контролер);
Параметр контролер - это ссылка на класс, выполняющий анализ загрузки. Мы разберем его позже.
Загружают изображение обычно при перекрытии метода paint() .
Итак, выведем в апплет находящийся на моей домашней странице файл SHISHKIN.JPG
//------------------------------------------------------------
// Program : MyFirstImage
//------------------------------------------------------------
// Author : Katz Yakov
//------------------------------------------------------------
// Date : 20/01/98
//------------------------------------------------------------
import java.awt.*;
import java.applet.*;
//------------------------------------------------------------
// Создаем класс MyFirstImage
public class MyFirstImage extends Applet{
// Перекрываем функцию init()
public void init() {
// Загрузка изображения
Image picture = getImage(getCodeBase(),"SHISHKIN.JPG");
}
// Перекрываем функцию paint()
public void paint(Graphics gr) {
// Вывод изображения на экран
gr.drawImage(picture, 0, 0, this) ;
}
}
Апплет выглядит следующим образом:
Изображение на экран выводится, но здесь есть несколько недостатков:
1. Изображение перерисовывается полностью каждый раз при поступлении новой порции - поэтому при загрузке оно выглядит мигающим.
2. Используется метод repaint() , который перерисовывает изображение через 0.1 секунды.
3. Стандартная реализация не учитывает возможности сбоя при загрузке изображения - в этом случае никакого сообщения пользователь не получит.