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

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

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

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

Использование интерфейса AppletContext

Для того чтобы получить список всех аплетов, расположенных в текущем документе HTML, ваш аплет прежде всего должен получить ссылку на интерфейс AppletContext. Затем нужно вызвать метод getApplets, возвращающий искомый список.

Рассмотрим этот процесс подробно.

Получение контекста аплетов

Для получения контекста аплетов, или ссылки на интерфейс AppletContext вы должны воспользоваться методом getAppletContext, определенным в классе Applet:


AppletContext appContext;
appContext = getAppletContext();

Далее, вызывая методы, определенные в интерфейсе AppletContext, вы можете получить ссылку на конкретный аплет или список ссылок на все аплеты.

Получение ссылки на аплет

Метод getApplet возвращает ссылку на аплет, заданный своим именем:


public abstract Applet getApplet(String name);

Это имя должно быть указано в параметре NAME оператора <APPLET> языка HTML, или оно должно передаваться аплету через параметр с именем NAME.

Первый из этих способов демонстрируется ниже:


<applet
    code=MyApplet.class
    id=MyApplet
    width=320
    height=100 
    name="TestApplet">
</applet>

Здесь параметр NAME задает для аплета MyApplet имя TestApplet.

Второй способ был использован нами в следующем фрагменте документа HTML:


<applet
    code=MyApplet.class
    id=MyApplet
    width=320
    height=100 >
    <param name=TestApplet value="TestApplet">
</applet>

Если аплет с указанным именем имеется в текущем документе HTML, метод getApplet возвращает ссылку на соответствующий объект. Пользуясь этой ссылкой, можно получить доступ к полям и методам, определенным в аплете как public. Если же аплет не найден, метод getApplet возвращает значение null.

Получение списка всех аплетов

С помощью метода getApplet вы сможете получить ссылку на один аплет, заданный своим именем, но наша задача - получить ссылки на все аплеты, расположенные в текущем документе HTML. Это можно сделать с помощью метода getApplets, определенного следующим образом:


public abstract Enumeration getApplets();

Перед вызовом этого метода вы должны определить список класса Enumeration, например, следующим образом:


Enumeration eApplets;
eApplets = appContext.getApplets();

Просмотр списка аплетов

Список класса Enumeration можно просмотреть в цикле только один раз, вызывая для получения очередного элемента списка метод nextElement:


while(eApplets.hasMoreElements())
{
  Applet currentApplet = (Applet)(eApplets.nextElement());
  . . .
}

Для проверки условия завершения цикла следует вызывать метод hasMoreElements, который возвращает значение true, если в процессе просмотра список еще не был опустошен.

Заметим, что в полученном списке будет ссылка и на тот аплет, который выполняет поиск остальных аплетов. При необходимости в процессе просмотра вы можете выделить “свой” аплет следующим образом:


if(currentApplet == this)
{
  // Обработка "своего" аплета
}

Получение строки информации об аплете

Обратите внимание, что в каждом нашем аплете мы определяли метод getAppletInfo:


public String getAppletInfo()
{
  return "Name: Inspector\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";
}

Этот метод возвращает строку информации об аплете и, вообще говоря, необязателен. Однако если ваш аплет будет взаимодействовать с другими аплетами, то он может оказать существенную помощь в распознавании аплета.

В самом деле, просматривая в цикле список аплетов, расположенных в текущем документе HTML, аплет-инспектор может вызывать для каждого найденного аплета метод getAppletInfo с целью получения строки, идентифицирующей данный аплет:


appName = currentApplet.getAppletInfo();

Если же аплет не обеспечил метод getAppletInfo, то будет вызван одноименный метод из базового класса Applet, который просто возвращает значение null. Очевидно, это значение нельзя использовать для идентификации аплета.

Получение информации о параметрах аплета

Если аплет получает из документа HTML параметры, желательно (но вовсе не обязательно) определить метод getParameterInfo. Этот метод возвращает массив строк описаний параметров, в котором находятся имена и типы параметров, а также строки описаний параметров.

Для примера мы привели фрагмент исходного текста приложения TEXTOUT, описанного нами в 30 томе, посвященном разработке приложений Java:


public String[][] getParameterInfo()
{
  String[][] info =
  {
    { PARAM_Str1, "String", "Text string to write" },
    { PARAM_Str2, "String", "Text string to write" },
    { PARAM_Str3, "String", "Text string to write" },
      . . .
    { PARAM_Font1, "String", "Text font" },
    { PARAM_Font2, "String", "Text font" },
    { PARAM_Font3, "String", "Text font" },
      . . .
    { PARAM_Type1, "String", "Font type" },
    { PARAM_Type2, "String", "Font type" },
    { PARAM_Type3, "String", "Font type" },
  };
  return info;    
}

Вызывая метод getParameterInfo для найденного аплета, аплет-инспектор может многое узнать о его параметрах. Эти знания нужны, в частности, для получения значений параметров.

Получение значений параметров аплета

Для получения значения заданного параметра найденного аплета вы можете воспользоваться методом getParameter:


String sParameter = currentApplet. GetParameter("name");

Здесь мы получаем значение параметра с именем NAME.

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