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

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

Библиотека :: Компьютеры и Программирование :: А.В. Фролов, Г.В. Фролов - Microsoft Visual J++
<<-[Весь Текст]
Страница: из 275
 <<-
 
---------------------------
  // run
  // Метод, который работает в рамках отдельной задачи
  // Он рисует в окне аплета эллипсы случайного
  // цвета, размера и расположения
  // -------------------------------------------------------
  public void run()
  {
    while (true)
    {
      int x, y, width, height;
      int rColor, gColor, bColor;
      
      // Выбираем случайным образом размеры
      // и расположение рисуемого эллипса
      x = (int)(dimAppWndDimension.width * Math.random());
      y = (int)(dimAppWndDimension.height * Math.random());
      width  = (int)(dimAppWndDimension.width * 
         Math.random()) / 2;
      height = (int)(dimAppWndDimension.height * 
         Math.random()) / 2;
      
      // Выбираем случайный цвет для рисования эллипса
      rColor = (int)(255 * Math.random());
      gColor = (int)(255 * Math.random());
      bColor = (int)(255 * Math.random());

      // Устанавливаем выбранный цвет 
      // в контексте отображения
      g.setColor(new Color(rColor, gColor, bColor));

      // Рисуем эллипс
      g.fillOval(x, y, width, height);

      // Выполняем задержку на 50 миллисекунд
      try
      {
        Thread.sleep(50);
      }
      catch (InterruptedException e)
      {
        stop();
      }
    }
  }
}
   В листинге 1.6 мы привели исходный текст документа HTML, предназначенного 
для совместной работы с нашим приложением.
Листинг 1.6. Файл MultiTask2\ MultiTask2.html


MultiTask2




The source. Описание исходного текста В этом приложении мы создаем на базе класса Thread два класса, один из которых предназначен для создания задачи рисования прямоугольников, а другой - для создания задачи рисования закрашенных эллипсов. Что же касается основного класса аплета, то он унаследован, как обычно, от класса Applet и не реализует интерфейс Runnable. Поля класса MultiTask2 В классе MultiTask2 мы определили два поля с именами m_DrawRectThread и m_DrawEllipseThread: DrawRectangles m_DrawRectThread = null; DrawEllipse m_DrawEllipseThread = null; Эти поля являются ссылками на классы, соответственно DrawRectangles и DrawEllipse. Первый из них создан для рисования прямоугольников, а второй - эллипсов. Указанные поля инициализируются занчением null, что соответствует неработающим или несозданным задачам. Метод paint класса MultiTask2 Метод paint класса MultiTask2 не делает ничего нового по сравнению с аналогичным методом предыдущего аплета. Он просто раскрашивает окно аплета в желтый цвет и рисует вокруг него черную рамку. Метод start класса MultiTask2 Этот метод последовательно создает две задачи и запускает их на выполнение: public void start() { if (m_DrawRectThread == null) { m_DrawRectThread = new DrawRectangles(this); m_DrawRectThread.start(); } if (m_DrawEllipseThread == null) { m_DrawEllipseThread = new DrawEllipse(this); m_DrawEllipseThread.start(); } } Метод stop класса MultiTask2 Когда пользователь покидает страницу сервера Web с аплетом, метод stop класса MultiTask2 последовательно останавливает задачи рисования прямоугольников и эллипсов: public void stop() { if (m_DrawRectThread != null) { m_DrawRectThread.stop(); m_DrawRectThread = null; } if (m_DrawEllipseThread == null) { m_DrawEllipseThread.stop(); m_DrawEllipseThread = null; } } Поля класса DrawRectangles Класс DrawRectangles определен для задачи рисования прямоугольников. В поле g класа хранится контекст отображения окна аплета, а в поле dimAppWndDimension - размеры этого окна. Значения этих полей определяются конструктором класса
 
<<-[Весь Текст]
Страница: из 275
 <<-