| |
умента 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.
Обращение к полям и методам других аплетов
Теперь вы научились искать аплеты, расположенные в текущем документе HTML,
получая список ссылок на соответствующие объекты. Однако для того чтобы
получить доступ к полям и методам найденных аплетов, вы должны сделать еще одну
вещь. Нужно импортировать в аплет, который занимается поиском, описание класса
аплета, к полям и методам которого будет выполняться обращение.
Поясним это.
Все аплеты, как вы знаете, происходят от класса Applet. Они добавляют в этот
класс свои поля и методы, а также переопределяют методы из базового класса.
В процессе поиска аплетов метод nextElement возвращает ссылку на объект,
принадлежащий к классу Object, который мы можем преобразовать к классу Applet:
Applet currentApplet = (Applet)(eApplets.nextElement());
Однако такое преобразование сможет открыть нам доступ только к тем полям и
методам, которые определены в базовом классе. Для того чтобы получить доступ к
полям и методам класса найденного аплета, мы должны преобразовать значение,
полученное от метода nextElement, к ссылке на класс этого аплета.
Как это можно сделать?
Рассмотрим конкретный пример, использованный нами в приложении Inspector,
полные исходные тексты которого вы найдете ниже.
Это приложение управляет работой аплета Audio, описанного в предыдущей главе
и предназначенного для проигрывания звукового файла. В классе Audio определено
поле auClip, в котором хранится ссылка на интерфейс AudioClip:
public class Audio extends Applet
{
private String m_ClipName = "kaas.au";
private final String PARAM_ClipName = "ClipName";
AudioClip auClip;
. . .
}
Аплет Inspector получает доступ к полю auClip и вызывает методы,
предназначенные для управления проигрыванием звукового файла. Таким образом,
аплет Inspector пользуется полем auClip, определенным в другом аплете.
Чтобы это стало возможным, в исходном тексте аплета Inspector импортируется
класс Audio, как это показано ниже:
import java.applet.*;
import java.awt.*;
import java.util.*;
import Audio;
Когда в процессе поиска аплетов аплет Inspector обнаруживает аплет Audio, он
сохраняет ссылку на этот аплет в поле appAudio, выполняя явное преобразование
типов:
Audio appAudio = null;
. . .
if(appName.equals("Name: Audio"))
{
appAudio = (Audio)currentApplet;
}
Теперь, пользуясь значением из поля appAudio, можно обращаться к полю auClip,
определенному в аплете Audio:
appAudio.auClip.play();
Приложение Inspector
Аплет Inspector располагается в одном документе HTML с приложениями Audio и
Rectangles, которые уже были описаны в нашей книге (рис. 6.1).
Рис. 6.1. Документ HTML, в котором расположены три аплета - Inspector, Audio и
Rectangles
В верхней части окна аплета Inspector расположены кнопки, дублирующие
одноименные кнопки аплета Audio. С их помощью можно заставить аплет Audio
проигрывать файл в однократном режиме или в цикле, а также остановить
проигрывание.
В нижней части аплета Inspector отображается список имен аплетов, найденных
в текущем документе HTML. Для списка используются первые строки описаний
аплетов, полученные методом getAppletInfo.
Исходные те
|
|