Назад
Вперед
10.1. Получение списка аплетов
Аплет отображает в своем окне список всех
аплетов, расположенных в том документе HTML, где
находится и он сам. Пример демонстрирует
использование интерфейса AppletContext и метода getApplets.
Исходный текст примера
Архив проекта для Java WorkShop 2.0
Демонстрация
(ваш браузер должен уметь работать с аплетами
Java JDK 1.1)
Немного теории
Если в одном документе HTML расположено
несколько аплетов, то они могут
взаимодействовать между собой. Аплеты могут
получать списки всех других аплетов, находящихся
на той же странице, они могут получить их
описание, возвращаемое методом getAppletInfo, а также
описание параметров. Аплеты даже могут вызывать
методы, определенные в других аплетах, и
обращаться к полям классов из других аплетов.
Аплеты, желающие взаимодействовать с другими
аплетами, должны получить ссылку на интерфейс
AppletContext. Для этого следует вызвать метод
getAppletContext, определенный в классе Applet:
AppletContext ac;
ac = getAppletContext();
Далее пользуясь этим интерфейсом, нетрудно
получить полный список аплетов, расположенных в
текущем документе HTML. Это можно сделать методом
getApplets:
Enumeration enApplets;
enApplets = ac.getApplets();
Данный метод возвращает перечисление всех
аплетов текущего документа HTML.
Описание примера
Аплет AppletFinder, исходный текст которого описан в
этом разделе, получает информацию о всех аплетах
из того же документа HTML, где он находится сам. Эта
информация отображается в окне аплета в виде
списка (рис. 1).
Рис. 1. В окне аплета AppletFinder находится список
имен других аплетов, расположенных на той же
странице
На рис. 1 показан фрагмент документа HTML,
содержащий помимо аплета AppletFinder еще четыре
аплета. Для каждого из них (и для себя самого)
аплет AppletFinder вызывает метод getAppletInfo, отображая в
своем окне возвращенную этим методом информацию.
Рассмотрим исходный текст аплета.
Главный класс аплета AppletFinder
В главном классе аплета, созданном на базе
класса Applet, мы определили поле lAppletsInfo класса List:
import java.awt.*;
import java.applet.*;
import java.util.*;
public class AppletFinder extends Applet
{
List lAppletsInfo;
. . .
}
Это поле хранит ссылку на список класса List, в
окне которого будет показана информация о
найденных аплетах.
Метод init
Получив управление, метод init создает список
класса List:
lAppletsInfo = new List(5, false);
Далее он получает ссылку на интерфейс AppletContext:
AppletContext ac;
ac = getAppletContext();
Чтобы получить список ссылок на главные классы
аплетов, расположенные в текущем документе HTML, мы
вызываем метод getApplets:
Enumeration enApplets;
enApplets = ac.getApplets();
Этот список возвращается как перечисление
Enumeration.
Обработка перечисления выполняется в цикле:
Applet ap;
String szAppletInfo = "";
while(enApplets.hasMoreElements())
{
ap = (Applet)(enApplets.nextElement());
szAppletInfo = ap.getAppletInfo();
lAppletsInfo.add(szAppletInfo);
}
Здесь для каждого элемента, извлеченного из
списка методом nextElement, мы выполняем явное
преобразование типа. Полученное значение
сохраняется во временной переменной ap класса
Applet. Это и есть ссылка на главный класс
найденного аплета.
Пользуясь данной ссылкой, мы вызываем метод
getAppletInfo, который следует определять во всех
аплетах. В аплетах, описанных в нашей библиотеке
примеров, метод getAppletInfo возвращающет текстовую
строку вида "Name: <имя аплета>". Вы можете
определить этот метод по-своему.
Полученная от найденного аплета информация
записывается в список lAppletsInfo методом add.
Далее метод init добавляет список в окно аплета с
применением схемы размещения компонент BorderLayout:
setLayout(new BorderLayout());
add("Center", lAppletsInfo);
В результате список занимает всю поверхность
окна аплета.
Метод getAppletInfo
Этот метод возвращает имя нашего аплета в виде
текстовой строки:
public String getAppletInfo()
{
return "Name: AppletFinder";
}
Обратите внимание, что на рис. 1 это имя
находится в списке наряду с именами других
аплетов. Такое происходит потому что метод getApplets
находит и наш аплет тоже.
Назад Вперед |