Druzya.org
Возьмемся за руки, Друзья...
 
 
Наши Друзья

Александр Градский
Мемориальный сайт Дольфи. 
				  Светлой памяти детей,
				  погибших  1 июня 2001 года, 
				  а также всем жертвам теракта возле 
				 Тель-Авивского Дельфинариума посвящается...

Библиотека :: Компьютеры и Программирование :: А.В. Фролов, Г.В. Фролов - Microsoft Visual J++
<<-[Весь Текст]
Страница: из 275
 <<-
 
ажений фона, для флоппи-диска и для компакт-диска), а 
затем добавляет их в объект MediaTracker с помощью метода addImage:
BkgImg = getImage(getCodeBase(), "bkg.gif");
mt.addImage(BkgImg , 0);

FloppyDiskImg = getImage(getCodeBase(), "disk.gif");
mt.addImage(FloppyDiskImg, 0);

CDDiskImg = getImage(getCodeBase(), "cd.gif");
mt.addImage(CDDiskImg, 0);
   Метод paint
   Метод paint прежде всего раскрашивает окно аплета в белый цвет и обводит его 
черной рамкой. Затем на подготовленной таким образом поверхности он пишет 
сообщение о начале процесса загрузки изображений: 
g.drawString("Подождите, идет загрузка...",
  20, dimAppWndDimension.height / 2);
   Далее ожидается загрузка всех изображений, для чего вызывается метод 
waitForAll из класса MediaTracker:
try
{
  mt.waitForAll();
}
catch (InterruptedException ex)
{
}
   Когда все изображения будут загружены, следует серия вызовов метода 
drawImage, с помощью которых рисуется изображение фона, два изображения 
флоппи-диска и два изображения компакт-диска:
g.drawImage(BkgImg, 1, 1, 
  dimAppWndDimension.width  - 2, 
  dimAppWndDimension.height - 2, this);
g.drawImage(FloppyDiskImg, 25, 42, 200, 200, this);
g.drawImage(FloppyDiskImg, 25, 3, this);
g.drawImage(CDDiskImg , 70, 3, this);
g.drawImage(CDDiskImg , 115, 3, 40, 25, this);
   Приложение DrawImageObserver
   Приложение DrawImageObserver рисует в своем окне изображение фона, такое же, 
как и в предыдущем приложении. При этом для ожидания процесса загрузки 
изображения перед рисованием фона мы используем интерфейс ImageObserver.
   Если бы изображение фона, имеющее значительный размер, рисовалось без 
ожидания его загрузки, оно появлялось бы в окне аплета по частям. Наше 
приложение рисует его сразу, так как дожидается полной загрузки.
   Исходные тексты приложения
   Главный файл исходных текстов приложения DrawImageObserver приведен в 
листинге 4.5.
Листинг 4.5. Файл DrawImageObserver\DrawImageObserver.java
// =========================================================
// Рисование растровых изображений с ожиданием их загрузки
// Для ожидания применяется интерфейс ImageObserver
//
// (C) Фролов А.В, 1997
//
// E-mail: [email protected]
// WWW:    http://www.glasnet.ru/~frolov
//            или
//         http://www.dials.ccas.ru/frolov
// =========================================================
import java.applet.*;
import java.awt.*;

public class DrawImageObserver extends Applet
{
  // Фоновое изображение
  Image BkgImg;
  
  boolean fAllLoaded = false;

  // -------------------------------------------------------
  // getAppletInfo
  // Метод, возвращающей строку информации об аплете
  // -------------------------------------------------------
  public String getAppletInfo()
  {
    return "Name: DrawImageObserver\r\n" +
      "Author: Alexandr Frolov\r\n" +
      "E-mail: [email protected]" +
      "WWW:    http://www.glasnet.ru/~frolov" +
      "Created with Microsoft Visual J++ Version 1.0";
  }

  // -------------------------------------------------------
  // init
  // Метод init, получает управление при 
  // инициализации аплета
  // -------------------------------------------------------
  public void init()
  {
    // Загружаем фоновое изображение
    BkgImg = getImage(getCodeBase(), "bkg.gif");
  }

  // -------------------------------------------------------
  // imageUpdate
  // Вызывается, когда появляется информация об изображении
  // -------------------------------------------------------
  public boolean imageUpdate(Image img, int flags,
    int x, int y, int w, int h)
  {
    // Проверяем, все ли изображение загружено
    fAllLoaded = ((flags & ALLBITS) != 0);

    // Если все, перерисовываем окно
    if(fAllLoaded)
      repaint();

    // Если изображение загружено полностью, дальнейшие 
    // вызовы метода imageUpda
 
<<-[Весь Текст]
Страница: из 275
 <<-