| |
нд, вызывая метод sleep:
try
{
Thread.sleep(50);
}
catch (InterruptedException e)
{
stop();
}
Для обработки исключения InterruptedException, которое может возникнуть во
время работы этого метода, мы предусмотрели блок try - catch. При возникновении
указанного исключения работа задачи останавливается вызовом метода stop.
Метод mouseEnter
В предыдущем томе “Библиотеки системного программиста” мы рассказывали о
методах mouseEnter и mouseExit. Первый из этих методов вызывается, когда в
результате перемещения курсор мыши оказывается над окном аплета, а второе -
когда курсор покидает окно аплета. Мы переопределили эти методы в своем аплете.
Когда курсор мыши оказывается над окном аплета, мы временно приостанавливаем
работу задачи, вызывая метод suspend:
public boolean mouseEnter(Event evt, int x, int y)
{
if (m_Rectangles != null)
{
m_Rectangles.suspend();
}
return true;
}
Преостановленная задача не уничтожается. Ее работа может быть продолжена с
помощью метода resume.
Метод mouseExit
Когда курсор мыши покидает окно аплета, вызывается метод mouseExit. Этот
метод в нашем аплете возобновляет работу задачи, временно приостановленной
методом suspend. Для этого используется метод resume, как это показано ниже:
public boolean mouseExit(Event evt, int x, int y)
{
if (m_Rectangles != null)
{
m_Rectangles.resume();
}
return true;
}
Приложение MultiTask2
Поставим теперь перед собой другую цель - создать аплет, запускающий на
выполнение сразу две задачи. Наше следующее приложение MultiTask2 запускает
одну задачу для рисования прямоугольников, а другую - для рисования закрашенных
эллипсов (рис. 1.3).
Рис. 1.3. Окно аплета MultiTask2
Расположение, размеры и цвет прямоугольников и эллипсов выбирается случайным
образом.
Исходные тексты приложения
Исходный текст приложения вы найдете в листинге 1.5.
Листинг 1.5. Файл MultiTask2\ MultiTask2.java
// =========================================================
// Рисование прямоугольников и эллипсов
// в разных задачах
//
// (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 MultiTask2 extends Applet
{
// Ссылка на задачу рисования прямоугольников
DrawRectangles m_DrawRectThread = null;
// Ссылка на задачу рисования эллипсов
DrawEllipse m_DrawEllipseThread = null;
// -------------------------------------------------------
// getAppletInfo
// Метод, возвращающей строку информации об аплете
// -------------------------------------------------------
public String getAppletInfo()
{
return "Name: MultiTask2\r\n" +
"Author: Alexandr Frolov\r\n" +
"E-mail: [email protected]" +
"WWW: http://www.g
|
|