2a9cfd0b

Исходные тексты приложения


В листинге 1.1 представлены исходные тексты мультизадачного приложения MultiTask, созданного системой автоматизированной разработки аплетов, слегка измененного и снабженного нашими комментариями. В дальнейшем мы создадим блее сложные мультизадачные аплеты.

Листинг 1.1. Файл MultiTask\MultiTask.java

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

// Периодическое обновление окна аплета

// с использованием мультизадачности

//

// (C) Фролов А.В, 1997

//

// E-mail: frolov@glas.apc.org

// WWW:    http://www.glasnet.ru/~frolov

//            или

//         http://www.dials.ccas.ru/frolov

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

import java.applet.*;

import java.awt.*;

public class MultiTask extends Applet implements Runnable

{

  // Задача, которая будет обновлять окно аплета

  Thread m_MultiTask = null;



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

  // MultiTask

  // Конструктор класса MultiTask. Не используется

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

  public MultiTask()

  {

  }

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

  // getAppletInfo

  // Метод, возвращающей строку информации об аплете

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

  public String getAppletInfo()

  {

    return "Name: MultiTask\r\n" +

      "E-mail: frolov@glas.apc.org" +

      "WWW:    http://www.glasnet.ru/~frolov" +

      "Author: Alexandr Frolov\r\n" +

      "Created with Microsoft Visual J++ Version 1.0";

   }

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

  // init

  // Метод, получающий управление при инициализации аплета

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

  public void init()

  {

  }

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

  // destroy

  // Метод, получающий управление при

  // завершении работы аплета


Исходный файл приложения Rectangles приведен в листинге 1.3.

Листинг 1.3. Файл Rectangles\Rectangles.java

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

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

//

// (C) Фролов А.В, 1997

//

// E-mail: frolov@glas.apc.org

// WWW:    http://www.glasnet.ru/~frolov

//            или

//         http://www.dials.ccas.ru/frolov

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

import java.applet.*;

import java.awt.*;

import java.util.*;

public class Rectangles extends Applet implements Runnable

{

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

  Thread m_Rectangles = null;

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

  // getAppletInfo

  // Метод, возвращающей строку информации об аплете

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

  public String getAppletInfo()

  {

    return "Name: Rectangles\r\n" +

      "Author: Alexandr Frolov\r\n" +

      "E-mail: frolov@glas.apc.org" +

      "WWW:    http://www.glasnet.ru/~frolov" +

      "Created with Microsoft Visual J++ Version 1.0";

  }

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

  // paint

  // Метод paint, выполняющий рисование в окне аплета

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

  public void paint(Graphics g)

  {

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

    Dimension 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);

  }




Исходный текст приложения вы найдете в листинге 1.5.

Листинг 1.5. Файл MultiTask2\ MultiTask2.java

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

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

// в разных задачах

//

// (C) Фролов А.В, 1997

//

// E-mail: frolov@glas.apc.org

// 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: frolov@glas.apc.org" +

      "WWW:    http://www.glasnet.ru/~frolov" +

      "Created with Microsoft Visual J++ Version 1.0";

  }

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

  // paint

  // Метод paint, выполняющий рисование в окне аплета

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

  public void paint(Graphics g)

  {

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

    Dimension dimAppWndDimension = size();

   

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

    g.setColor(Color.yellow);

   

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

    g.fillRect(0, 0,

      dimAppWndDimension.width  - 1,

      dimAppWndDimension.height - 1);

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




Исходный текст приложения Scroller представлен в листинге 1.7.

Листинг 1.7. Файл Scroller\Scroller.java

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

// Просмотр текста в режиме динамической свертки

// по вертикали

//

// (C) Фролов А.В, 1997

//

// E-mail: frolov@glas.apc.org

// WWW:    http://www.glasnet.ru/~frolov

//            или

//         http://www.dials.ccas.ru/frolov

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

import java.applet.*;

import java.awt.*;

public class Scroller extends Applet implements Runnable

{

  // Ссылка на задачу, выполняющую свертку

  Thread m_Scroller = null;

  // Отображаемые строки

  private String m_String1 = "Мы представляем наши новые книги";

  private String m_String2 =

    "Том 29. Сервер Web своими руками";

  private String m_String3 =

    "Том 30. Microsoft Visual J++. Создание приложений на языке Java. Часть 1";

  private String m_String4 =

    "Том 31. Разработка приложений для Internet с Visual C++ и MFC";

  private String m_String5 =

    "Том 32. Microsoft Visual J++. Создание приложений на языке Java. Часть 2";

  private String m_String6 = "";

  // Имена параметров

  private final String PARAM_String1 = "String1";

  private final String PARAM_String2 = "String2";

  private final String PARAM_String3 = "String3";

  private final String PARAM_String4 = "String4";

  private final String PARAM_String5 = "String5";

  private final String PARAM_String6 = "String6";

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

  // getAppletInfo

  // Метод, возвращающей строку информации об аплете

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

  public String getAppletInfo()

  {

    return "Name: Scroller\r\n" +

      "Author: Alexandr Frolov\r\n" +

      "E-mail: frolov@glas.apc.org" +




Исходные тексты приложения HorzScroll приведены в листинге 1.9.

Листинг 1.9. Файл HorzScroll\HorzScroll.java

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

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

//

// (C) Фролов А.В, 1997

//

// E-mail: frolov@glas.apc.org

// WWW:    http://www.glasnet.ru/~frolov

//            или

//         http://www.dials.ccas.ru/frolov

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

import java.applet.*;

import java.awt.*;

public class HorzScroll extends Applet implements Runnable

{

  // Ссылка на задачу рисования строки текста

  Thread m_HorzScroll = null;

  // Значения параметров по умолчанию

  private String m_Str   = "Hello from Java!";

  private String m_Fnt   = "Helvetica";

  private String m_style = "BOLD";

  private int m_size     = 12;

  private String m_color = "red";

  private int m_delay    = 50;

  // Имена параметров

  private final String PARAM_str   = "str";

  private final String PARAM_font  = "font";

  private final String PARAM_style = "style";

  private final String PARAM_size  = "size";

  private final String PARAM_color = "color";

  private final String PARAM_delay = "delay";

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

  // getAppletInfo

  // Метод, возвращающей строку информации об аплете

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

  public String getAppletInfo()

  {

    return "Name: HorzScroll\r\n" +

      "Author: Alexandr Frolov\r\n" +

      "E-mail: frolov@glas.apc.org" +

      "WWW:    http://www.glasnet.ru/~frolov" +

      "Created with Microsoft Visual J++ Version 1.0";

  }

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

  // getParameterInfo

  // Иинформация о параметрах

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




Исходные тексты приложения Synchro приведены в листинге 1.11.

Листинг 1.11. Файл Synchro\Synchro.javal

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

// Демонстрация синхронизации двух задач

//

// (C) Фролов А.В, 1997

//

// E-mail: frolov@glas.apc.org

// WWW:    http://www.glasnet.ru/~frolov

//            или

//         http://www.dials.ccas.ru/frolov

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

import java.applet.*;

import java.awt.*;

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

// Основной класс аплета

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

public class Synchro extends Applet

{

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

  DrawRectangles m_DrawRectThread = null;

  // Ссылка на задачу, периодически разблокирующую задачу

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

  NotifyTask m_NotifyTaskThread = null;

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

  // getAppletInfo

  // Метод, возвращающей строку информации об аплете

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

  public String getAppletInfo()

  {

    return "Name: Synchro\r\n" +

      "Author: Alexandr Frolov\r\n" +

      "E-mail: frolov@glas.apc.org" +

      "WWW:    http://www.glasnet.ru/~frolov" +

      "Created with Microsoft Visual J++ Version 1.0";

  }

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

  // paint

  // Метод paint, выполняющий рисование в окне аплета

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

  public void paint(Graphics g)

  {

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

    Dimension dimAppWndDimension = size();

   

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

    g.setColor(Color.yellow);

   

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

    g.fillRect(0, 0,

      dimAppWndDimension.width  - 1,

      dimAppWndDimension.height - 1);




Исходный текст аплета MemStream приведен в листинге 2.3.

Листинг 2.3. Файл MemStream\MemStream.java

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

// Работа с потоками в оперативной памяти

//

// (C) Фролов А.В, 1997

//

// E-mail: frolov@glas.apc.org

// WWW:    http://www.glasnet.ru/~frolov

//            или

//         http://www.dials.ccas.ru/frolov

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

import java.applet.*;

import java.awt.*;

import java.io.*;

public class MemStream extends Applet

{

  // Выходной поток

  DataOutputStream OutStream;

  // Входной поток

  DataInputStream  InStream;

  // Строка, которая будет записана в поток

  String sOut;

  // Массив, в который будет копироваться содержимое

  // выходного потока

  byte[] bMemStream;

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

  // getAppletInfo

  // Метод, возвращающей строку информации об аплете

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

  public String getAppletInfo()

  {

    return "Name: MemStream\r\n" +

      "Author: Alexandr Frolov\r\n" +

      "E-mail: frolov@glas.apc.org" +

      "WWW:    http://www.glasnet.ru/~frolov" +

      "Created with Microsoft Visual J++ Version 1.0";

  }

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

  // init

  // Метод init, получает управление при инициализации

  // аплета

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

  public void init()

  {

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

    sOut = "Hello, Java!";

    try

    {

      // Создаем выходной поток в оперативной памяти

      ByteArrayOutputStream baStream =

        new ByteArrayOutputStream(255);

      // Создаем буферизованный форматированный поток

      // на базе потока baStream

      OutStream = new DataOutputStream(

        new BufferedOutputStream(baStream));




Исходные тексты приложения DirectFileAccess приведены в листинге 2.9.

Листинг 2.9. Файл DirectFileAccess\DirectFileAccess.java

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

// Прямой доступ к файлу с помощью класса RandomAccessFile

//

// (C) Фролов А.В, 1997

//

// E-mail: frolov@glas.apc.org

// WWW:    http://www.glasnet.ru/~frolov

//            или

//         http://www.dials.ccas.ru/frolov

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

import java.io.*;

import java.util.*;

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

// Класс DirectFileAccess

// Главный класс приложения

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

public class DirectFileAccess

{

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

  // main

  // Метод, получающий управление при запуске приложения

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

  public static void main(String args[])

  {

    // Массив для ввода строки с клавиатуры

    byte bKbdInput[] = new byte[256];

    try

    {

      // Создаем новую базу данных

      SimpleDBMS db = new SimpleDBMS(

        "dbtest.idx", "dbtest.dat");

     

      // Добавляем в нее три записи

      db.AddRecord("Ivanov",   1000);

      db.AddRecord("Petrov",   2000);

      db.AddRecord("Sidoroff", 3000);

 

      // Получаем и отображаем содержимое первых трез

      // записей с номерами 2, 1 и 0

      System.out.println(db.GetRecordByNumber(2));

      System.out.println(db.GetRecordByNumber(1));

      System.out.println(db.GetRecordByNumber(0));

      // Закрываем базу данных

      db.close();

     

      // После ввода любой строки завершаем работу программы

      System.out.println("Press <Enter> to terminate...");

      System.in.read(bKbdInput);

    }

    catch(Exception ioe)

    {

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

    }

  }




Исходные тексты приложения ShowChart приведены в листинге 3.3.

Листинг 3.3. Файл ShowChart\ShowChart.java

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

// Рисование круговой диаграммы, данные для которой

// получены от сервера Web через сеть

//

// (C) Фролов А.В, 1997

//

// E-mail: frolov@glas.apc.org

// WWW:    http://www.glasnet.ru/~frolov

//            или

//         http://www.dials.ccas.ru/frolov

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

import java.applet.*;

import java.awt.*;

import java.net.*;

import java.io.*;

import java.util.*;

public class ShowChart extends Applet

{

  // Адрес URL файла с данными для круговой диаграммы

  URL SrcURL;

  // Содержимое этого файла

  Object URLContent;

  // Код ошибки

  int errno = 0;

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

  // getAppletInfo

  // Метод, возвращающей строку информации об аплете

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

  public String getAppletInfo()

  {

    return "Name: ShowChart\r\n" +

      "Author: Alexandr Frolov\r\n" +

      "E-mail: frolov@glas.apc.org" +

      "WWW:    http://www.glasnet.ru/~frolov" +

      "Created with Microsoft Visual J++ Version 1.0";

  }

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

  // init

  // Метод, получающий управление при инициализации аплета

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

  public void init()

  {

    try

    {

      // Создаем объект класса URL для файла с данными

      // для круговой диаграммы

      SrcURL = new URL("http://frolov/chart.txt");

      try

      {

        // Получаем содержимое этого файла

        URLContent = SrcURL.openConnection().getContent();

      }

      catch (IOException ioe)

      {

        showStatus("getContent exception");

        // При возникновении исключения во время получения




Исходный текст приложения ImageDraw вы найдете в листинге 4.1.

Листинг 4.1. Файл ImageDraw\ImageDraw.java

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

// Рисование растровых изображений

//

// (C) Фролов А.В, 1997

//

// E-mail: frolov@glas.apc.org

// WWW:    http://www.glasnet.ru/~frolov

//            или

//         http://www.dials.ccas.ru/frolov

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

import java.applet.*;

import java.awt.*;

public class ImageDraw extends Applet

{

  // Изображение флоппи-диска

  Image FloppyDiskImg;

  // Изображение компакт-диска

  Image CDDiskImg;

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

  // getAppletInfo

  // Метод, возвращающей строку информации об аплете

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

  public String getAppletInfo()

  {

    return "Name: ImageDraw\r\n" +

      "Author: Alexandr Frolov\r\n" +

      "E-mail: frolov@glas.apc.org" +

      "WWW:    http://www.glasnet.ru/~frolov" +

      "Created with Microsoft Visual J++ Version 1.0";

  }

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

  // init

  // Метод init, получает управление

  // при инициализации аплета

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

  public void init()

  {

    // Загружаем изображение флоппи-диска

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

    // Загружаем изображение флоппи-диска

    CDDiskImg = getImage(getCodeBase(), "cd.gif");

  }

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

  // paint

  // Метод paint, выполняющий рисование в окне аплета

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

  public void paint(Graphics g)

  {

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

    Dimension dimAppWndDimension = size();

   

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



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