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

Обращение к полям и методам других аплетов


Теперь вы научились искать аплеты, расположенные в текущем документе 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();



Содержание раздела