Электронная библиотека книг Александра Фролова и Григория Фролова.
Shop2You.ru Создайте свой интернет-магазин
Библиотека
Братьев
Фроловых

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

© Александр Фролов, Григорий Фролов
Том 32, М.: Диалог-МИФИ, 1997, 288 стр.

[Назад] [Содеожание] [Дальше]

Структура комбинированных приложений

Рассмотрим структуру комбинированного приложения Combi, полные исходные тексты которого мы привели ниже в этой главе.

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

Класс Combi создан на базе класса Applet, что необходимо для обеспечения работы этого приложения под управлением навигатора Internet:


public class Combi extends Applet
{
  . . .
  public static void main(String args[])
  {
    . . .
  }
  public String getAppletInfo()
  {
    . . .
  }
  public void init()
  {
    . . .
  }
  public void paint(Graphics g)
  {
    . . .
  }
}

Обратите внимание, что наряду с методами, которые обычно определяются аплетами, такими как getAppletInfo, init и paint, в классе комбинированного приложения определен метод main. Если приложение запускается как аплет, метод main не получает управления. Если же приложение запущено автономно, этот метод первым получает управление и выполняет все необходимые инициализирующие действия.

Главное из этих действий - создание окна на базе класса Frame для размещения в нем аплета, создание аплета и вызов функций инициализации аплета. Ниже мы привели исходный текст метода main приложения Combi, созданный для нас системой Java Applet Wizard:


public static void main(String args[])
{
  CombiFrame frame = new CombiFrame("Combi");
  frame.show();

  frame.hide();
  frame.resize(
    frame.insets().left + frame.insets().right  + 320,
    frame.insets().top  + frame.insets().bottom + 240);

  Combi applet_Combi = new Combi();
  frame.add("Center", applet_Combi);
  . . .
  applet_Combi.init();
  applet_Combi.start();
  frame.show();
}

Прежде всего, метод main создает объект frame класса CombiFrame, определенного в нашем приложении на базе класса Frame (окно фрейма). Напомним, что класс Frame, который был нами описан в 30 томе “Библиотеки системного программиста”, позволяет приложениям Java создавать окна, напоминающие окна обычных приложений Windows.

Метод show отображает окно фрейма.

Далее в методе main выполняется изменение размеров окна фрейма, перед чем окно скрывается методом hide. Для изменения размеров окна применяется метод resize, которому через первый и второй параметры передаются новые значения, соответственно, ширины и высоты окна.

Размеры окна устанавливаются с учетом размеров внешней рамки и заголовка окна, для чего применяется метод insets. Поля left и right объекта класса Insets, ссылку на который возвращает метод insets, содержат ширину, соответственно, левой и правой части рамки окна. Поле top содержит высоту верхней части рамки окна с учетом заголовка, а поле bottom - высоту нижней части рамки окна.

Далее метод main делает нечто интересное - он создает аплет класса Combi:


Combi applet_Combi = new Combi();

Когда приложение Java встроено в документ HTML как аплет, объект аплета создается автоматически навигатором при просмотре этого документа и добавляется в окно навигатора. В случае автономного приложения мы сами должны создать аплет и добавить его в окно фрейма.

Добавление аплета в окно фрейма выполняется методом add:


frame.add("Center", applet_Combi);

В 30 томе “Библиотеки системного программиста” мы использовали этот метод для добавления компонент в окно контейнера, которым, в частности, является окно фрейма.

Создав аплет, мы должны вызвать методы init и start, как это происходит при инициализации аплета, встроенного в документ HTML:


applet_Combi.init();
applet_Combi.start();

Перед завершением своей работы метод main отображает окно фрейма, внутри которого теперь находится окна аплета:


frame.show();

Класс фрейма для комбинированного приложения

Теперь о классе CombiFrame.

Определение этого класса выглядит достаточно просто:


class CombiFrame extends Frame
{
  public CombiFrame(String str)
  {
    super (str);
  }
  public boolean handleEvent(Event evt)
  {
    switch (evt.id)
    {
      case Event.WINDOW_DESTROY:
      {
        dispose();
        System.exit(0);
        return true;
      }
      default:
        return super.handleEvent(evt);
    }       
  }
}

Класс CombiFrame создан на базе класса Frame и предназначен для создания окна фрейма, в которое будет добавлен аплет. В этом классе определен конструктор и метод handleEvent.

Конструктор выполняет простую задачу - создание окна фрейма. Для этого он вызывает конструктор базового класса Frame, передавая ему через параметр строку заголовка окна.

Задача метода handleEvent - удаление окна фрейма, когда пользователь пытается его закрыть, сделав, например, щелчок мышью по правой кнопке в заголовке окна. В случае такой попытки методу handleEvent передается извещение с кодом Event.WINDOW_DESTROY.

В процессе обработки этого извещения метод handleEvent удаляет окно фрейма, вызывая метод dispose, а затем завершает работу приложения, вызывая статический метод exit из класса System.

Все прочие извещения передаются методу handleEvent, определенному в базовом классе.

[Назад] [Содеожание] [Дальше]