2a9cfd0b

Метод вызывается, когда курсор мыши


      // Рисуем прямоугольник

      g.fillRect(x, y, width, height);

      // Выполняем задержку на 50 миллисекунд

      try

       {

         Thread.sleep(50);

       }

       catch (InterruptedException e)

       {



         stop();

       }

    }

  }

  // -------------------------------------------------------

  // mouseEnter

  // Метод вызывается, когда курсор мыши оказывается над

  // окном аплета

  // -------------------------------------------------------

  public boolean mouseEnter(Event evt, int x, int y)

  {

    if (m_Rectangles != null)

    {

      // Когда курсор мыши оказывается над поверхностью

      // окна аплета, временно приостанавливаем

      // задачу рисования прямоугольников

      m_Rectangles.suspend();

    }

    return true;

  }

  // -------------------------------------------------------

  // mouseExit

  // Метод вызывается, когда курсор мыши покидает

  // окно аплета

  // -------------------------------------------------------

  public boolean mouseExit(Event evt, int x, int y)

  {

    if (m_Rectangles != null)

    {

      // Когда курсор мыши покидает окно аплета,

      // возобновляем работу задачи рисования

      // прямоугольников

      m_Rectangles.resume();

    }

    return true;

  }

}

В листинге 1.4 находится исходный текст документа HTML, созданного автоматически для нашего аплета.

Листинг 1.4. Файл Rectangles\Rectangles.html

<html>

<head>

<title>Rectangles</title>

</head>

<body>

<hr>

<applet

    code=Rectangles.class

    id=Rectangles

    width=320

    height=240 >

</applet>

<hr>

<a href="Rectangles.java">The source.</a>

</body>

</html>



  // 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.fillRect(x, y, width, height);

      // Выполняем задержку на 50 миллисекунд

      try

      {

        Thread.sleep(50);

      }

      catch (InterruptedException e)

      {

        stop();

      }

    }

  }

}

// =========================================================

// Класс задачи для рисования эллипсов

// =========================================================

class DrawEllipse extends Thread

{

  // Контекст отображения окна аплета

  Graphics g;

  // Размеры окна аплета

  Dimension dimAppWndDimension;

  // -------------------------------------------------------

  // DrawEllipse

  // Конструктор класса DrawEllipse

  // -------------------------------------------------------

  public DrawEllipse(Applet Appl)

  {

    g = Appl.getGraphics();

    // Определяем текущие размеры окна аплета



  public void paint(Graphics g)

  {

    // Определяем текущие размеры окна аплета

    Dimension dimAppWndDimension = size();

    // Определяем текущие размеры окна аплета

    dimAppWndDimension = size();

   

    // Выбираем в контекст отображения желтый цвет

    g.setColor(Color.yellow);

   

    // Закрашиваем внутреннюю область окна аплета

    g.fillRect(0, 0,

      dimAppWndDimension.width  - 1,

      dimAppWndDimension.height - 1);

    // Выбираем в контекст отображения черный цвет

    g.setColor(Color.black);

    // Рисуем рамку вокруг окна аплета

    g.drawRect(0, 0,

      dimAppWndDimension.width  - 1,

      dimAppWndDimension.height - 1);

  }

  // -------------------------------------------------------

  // start

  // Метод вызывается при первом отображении окна аплета

  // -------------------------------------------------------

  public void start()

  {

    if (m_Scroller == null)

    {

      m_Scroller = new Thread(this);

      m_Scroller.start();

    }

  }

      

  // -------------------------------------------------------

  // stop

  // Метод вызывается, когда окно аплета исчезает с экрана

  // -------------------------------------------------------

  public void stop()

  {

    if (m_Scroller != null)

    {

      m_Scroller.stop();

      m_Scroller = null;

    }

  }

  // -------------------------------------------------------

  // run

  // Метод, который работает в рамках отдельной задачи

  // Он выполняет динамическую свертку строк текста

  // -------------------------------------------------------

  public void run()

  {

    // Счетчик сдвинутых строк

    int ShiftsCounter = 0;

    // Размер сдвига по вертикали

    int yShift;

   

    // Высота символов текста

    int yChar;

    // Номер текущей рисуемой строки

    int CurrentStr = 0;

   

    // Массив сдвигаемых строк

    String s[] = new String[6];

    // Инициализация массива строк



    g.fillRect(0, 0,

      dimAppWndDimension.width  - 1,

      dimAppWndDimension.height - 1);

    // Выбираем в контекст отображения черный цвет

    g.setColor(Color.black);

    // Рисуем рамку вокруг окна аплета

    g.drawRect(0, 0,

      dimAppWndDimension.width  - 1,

      dimAppWndDimension.height - 1);

  }

  // -------------------------------------------------------

  // start

  // Метод вызывается при первом отображении окна аплета

  // -------------------------------------------------------

  public void start()

  {

    if (m_HorzScroll == null)

    {

      m_HorzScroll = new Thread(this);

      m_HorzScroll.start();

    }

  }

 

  // -------------------------------------------------------

  // stop

  // Метод вызывается, когда окно аплета исчезает с экрана

  // -------------------------------------------------------

  public void stop()

  {

    if (m_HorzScroll != null)

    {

      m_HorzScroll.stop();

      m_HorzScroll = null;

    }

  }

  // -------------------------------------------------------

  // run

  // Метод, который работает в рамках отдельной задачи

  // Он выполняет рисование текстовой строки по буквам

  // -------------------------------------------------------

  public void run()

  {

    // Получаем контекст отображения

    Graphics g = getGraphics();

    // Выбираем шрифт в контекст отображения

    if(m_style.equals("BOLD"))

      g.setFont(new Font(m_Fnt, Font.BOLD, m_size));

    else if(m_style.equals("ITALIC"))

      g.setFont(new Font(m_Fnt, Font.ITALIC, m_size));

    else

      g.setFont(new Font(m_Fnt, Font.PLAIN, m_size));

    // Выбираем цвет в контекст отображения

    if(m_color.equals("red"))

      g.setColor(Color.red);

    else if(m_color.equals("green"))

      g.setColor(Color.green);

    else

      g.setColor(Color.black);

   

    // Определяем размеры окна аплета



    g = Appl.getGraphics();

    // Определяем текущие размеры окна аплета

    dimAppWndDimension = Appl.size();

  }

  // -------------------------------------------------------

  // run

  // Метод, который работает в рамках отдельной задачи

  // Он рисует в окне аплета прямоугольники случайного

  // цвета, размера и расположения

  //

  // Этот метод должен быть определен как synchronized

  // -------------------------------------------------------

  public synchronized 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.fillRect(x, y, width, height);

      // Переводим задачу в сотояние ожидания, в котором

      // она будет находиться до тех пор, пока не будет

      // разблокирована задачей класса NotifyTask

      try

      {

        Thread.wait();

      }

      catch (InterruptedException e)

      {

      }

    }

  }

}

// =========================================================

// Класс задачи для периодического разблокирования

// задачи рисования прямоугольников

// =========================================================

class NotifyTask extends Thread

{

  // Ссылка на задачу, которую необходимо разблокировать



      idx.writeLong(idxFilePointer);

      // Сохраняем в файле дайнных два поля новой записи

      dat.writeBytes(name + "\r\n");

      dat.writeInt(account);

    }

    catch(Exception ioe)

    {

      System.out.println(ioe.toString());

    }

  }

  // -------------------------------------------------------

  // GetRecordByNumber

  // Извлечение записи по ее порядковому номеру

  // -------------------------------------------------------

  public String GetRecordByNumber(long nRec)

  {

    // Строка, в которой будет сохранена извлеченная запись

    String sRecord = "<empty>";

 

    try

    {

      // Значение поля account

      Integer account;

      // Значение поля name

      String str = null;

      // Вычисляем смещение в файле индексов по порядковому

      // номеру записи

      idx.seek(nRec * 8);

      // Извлекаем из файла индексов смещение записи

      // в файле данных

      idxFilePointer = idx.readLong();

      // Выполняем позиционирование на нужную запись

      // в файле данных

      dat.seek(idxFilePointer);

 

      // Извлекаем поля записи

      str = dat.readLine();

      account = new Integer(dat.readInt());

      // Объединяем значения полей в текстовую строку

      sRecord = new String("> " + account + ", " + str);

    }

    catch(Exception ioe)

    {

      System.out.println(ioe.toString());

    }

    // Возвращаем извлеченную запись

    return sRecord;

  }

}



   

    // Если ошибки нет, отображаем полученные данные

    else

      showStatus(sChart);

    // Создаем разборщик текстовой строки для

    // выделения значений углов в принятом файле данных

    StringTokenizer st =

      new StringTokenizer(sChart, ",\r\n");

    // Цикл по всем значениям

    while(st.hasMoreElements())

    {

      // Выбираем случайный цвет для рисования

      rColor = (int)(255 * Math.random());

      gColor = (int)(255 * Math.random());

      bColor = (int)(255 * Math.random());

      // Устанавливаем выбранный цвет в контексте

      // отображения

      g.setColor(new Color(rColor, gColor, bColor));

      // Получаем значение угла

      String angle = (String)st.nextElement();

      // Преобразуем его в численное значение

      AngleFromChart = new Integer(angle) ;

     

      // Рисуем сектор диаграммы

      g.fillArc(0, 0, 200, 200,

        PrevAngle, AngleFromChart.intValue());

      // Увеличиваем текущее значение угла

      PrevAngle += AngleFromChart.intValue();

    }

  }

}

Исходный текст документа HTML, созданного автоматически для нашего аплета, представлен в листинге 3.4.

Листинг 3.4. Файл ShowChart\ShowChart.html

<html>

<head>

<title>ShowChart</title>

</head>

<body>

<hr>

<applet

    code=ShowChart.class

    id=ShowChart

    width=200

    height=200 >

</applet>

<hr>

<a href="ShowChart.java">The source.</a>

</body>

</html>


Содержание раздела