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

Resource Limit Is Reached

The website is temporarily unable to service your request as it exceeded resource limit. Please try again later.

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


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




Начало  Назад  Вперед


508 Resource Limit Is Reached

Resource Limit Is Reached

The website is temporarily unable to service your request as it exceeded resource limit. Please try again later.