| |
плетов.
Этот список будет записан в поле eApplets класса Enumeration.
Когда в процессе поиска наш аплет найдет аплет Audio, то в поле appAudio
будет записана ссылка на него.
Кроме того, в классе Inspector определены поля btPlay, btLoop и btStop для
хранения ссылок на кнопки управления аплетом Audio.
Метод getAppletInfo
Метод getAppletInfo предоставляет другим заинтересованным аплетам (и себе, в
частности) строку информации об аплете Inspector. Эта строка аналогична строкам,
которые возвращают другие наши аплеты.
Метод init
Метод init создает три кнопки, предназначенные для управления аплетом Audio,
причем кнопка с названием Stop блокируется:
btPlay = new Button("Play");
btLoop = new Button("Loop");
btStop = new Button("Stop");
btStop.disable();
Далее созданные кнопки добавляются в окно аплета Inspector.
add(btPlay);
add(btLoop);
add(btStop);
Метод paint
После раскрашивания фона окна и рисования рамки метод paint получает с
помощью метода getAppletContext ссылку на интерфейс AppletContext:
appContext = getAppletContext();
Далее с помощью этой ссылки и метода getApplets приложение получает список
всех аплетов, расположенных в текущем документе HTML;
eApplets = appContext.getApplets();
Вслед за этим метод paint запускает цикл, в котором он получает ссылки на
все найденные аплеты:
while(eApplets.hasMoreElements())
{
. . .
}
В этом цикле с помощью метода nextElement приложение получает ссылку на
очередной аплет и, после преобразования ее к типу Applet, сохраняет в
переменной currentApplet:
Applet currentApplet = (Applet)(eApplets.nextElement());
Для каждого найденного аплета вызывается метод getAppletInfo:
appName = currentApplet.getAppletInfo();
Полученная строка обрезается до первого символа возврата каретки или
перевода на новую строку и записывается в переменную appName:
StringTokenizer st;
st = new StringTokenizer(appName, "\r\n");
appName = new String((String)st.nextElement());
Содержимое этой переменной (имя аплета) отображается в окне аплета Inspector
со сдвигом по вертикали, который завивит от номера найденного аплета:
g.drawString(appName , 10, 15 * i + 50);
В том случае, если в процессе получения строк информации об аплете был
найден аплет Audio, выполняется преобразование типа ссылки на этот аплет и
сохранение этой ссылки в поле appAudio:
if(appName.equals("Name: Audio"))
{
appAudio = (Audio)currentApplet;
}
Метод action
Метод action обрабатывает события, вызванные нажатием кнопок в окне аплета
Inspector. Обработка заключается в вызове сооветствующего метода с
использованием ссылки на аплет Audio. Например, если пользователь нажал кнопку
Play, метод action вызывает метод play:
if(evt.target.equals(btPlay))
{
appAudio.auClip.play();
btStop.enable();
}
Обратите внимание, что здесь мы ссылаемся через поле appAudio на поле auClip,
определенное в аплете Audio.
7 КОМБИНИРОВАННЫЕ ПРИЛОЖЕНИЯ JAVA
Наши предыдущие приложения были либо аплетами, либо автономными приложениями
с консольным окном. Основной класс аплетов был унаследован от класса Applet, а
в классе консольных приложений был определен метод main.
В этой главе мы расскажем о том, как создавать комбинированные приложения,
двоичный файл .class которых способен работать и как аплет, встроенный в
документ HTML, и как автономное приложение. Система автоматизированного
проектирования приложений Java Applet Wizard, встроенная в Mi
|
|