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. |