Электронная библиотека книг Александра Фролова и Григория Фролова.
Shop2You.ru Создайте свой интернет-магазин
Библиотека
Братьев
Фроловых
[Назад]

Библиотека примеров приложений Java

Оглавление
Список аплетов

Вызов метода из другого аплета
Параметры другого аплета
Поле другого аплета
Кнопки с зависимой фиксацией

Назад Вперед

10.2. Вызов метода из другого аплета

Пример демонстрирует использование интерфейса AppletContext и метода getApplet для вызова методов start и stop анимационного многопоточного аплета. При этом данный аплет может приостанавливать и возобновлять анимацию в окне контролируемого аплета.

Исходный текст примера

Архив проекта для Java WorkShop 2.0

Демонстрация
(ваш браузер должен уметь работать с аплетами Java JDK 1.1)

Немного теории

Интересно, что аплет может вызывать методы других аплетов, расположенных в том же документе HTML, если они определены как public.

Для вызова метода вам необходимо получить ссылку на аплет, метод которого вы собираетесь вызвать.

Чтобы это сделать, вы можете либо получить полный список всех найденных аплетов и найти там нужный, либо сразу получить ссылку на аплет с заданным именем.

Первый метод основан на использовании метода getApplets, определенного в интерфейсе AppletContext, а второй - на применении метода getApplet того же самого интерфейса.

Как работает метод getApplet?

В качестве единственного параметра этому методу следует передать текстовую строку имени аплета класса String. Если аплет с таким именем будет найден в текущем документе HTML, метод getApplet вернет на него ссылку.

Имя аплета обычно задается параметром NAME оператора <APPLET> языка гипертекстовой разметки HTML, например:

<APPLET CODE=Test.class NAME="Test" . . .>
</APPLET>

Описание примера

Наш аплет AppletControl управляет работой другого аплета Scroll2, исходный текст которого приведен в разделе "6.7. Устранение мерцания" нашей библиотеки примеров (рис. 1).

 pic1.gif (3305 bytes)

Рис. 1. Аплет AppletControl может запускать и останавливать анимацию в окне аплета Scroll2

Сразу после загрузки документа HTML с аплетами AppletControl и Scroll2 в окне второго из перечисленных аплетов вы будете наблюдать бегущую строку. Если нажать на кнопку Stop, расположенную в окне аплета AppletControl, анимация остановится, а если на кнопку Start - возобновится.

Рассмотрим исходный текст примера.

Главный класс аплета AppletControl

Так как аплет AppletControl будет обращаться к методу, определенному в аплете Scroll2, мы включили определение класса Scroll2 в исходный текст оператором import:

import java.awt.*;
import java.applet.*;
import java.util.*;
import java.awt.event.*;
import Scroll2;

public class AppletControl extends Applet
  implements ActionListener
{
  Button btnStart;
  Button btnStop;
  Scroll2 appletScroll;
  . . .
}

Класс AppletControl создан на базе класса Applet и реализует интерфейс ActionListener, необходимый для отслеживания нажатий на кнопки.

Поля btnStart и btnStop хранят ссылки на кнопки Start и Stop, а поле appletScroll - на найденный аплет Scroll2.

Метод init

Получив управление, метод init создает кнопки, добавляет их в окно аплета и подключает обработчики событий:

btnStart = new Button("Start");
btnStop = new Button("Stop");
add(btnStart);
add(btnStop);

btnStart.addActionListener(this);
btnStop.addActionListener(this);

Далее метод init получает ссылку на интерфейс AppletContext:

AppletContext ac;
ac = getAppletContext();

Пользуясь этой ссылкой и методом getApplet, мы получаем ссылку на аплет Scroll2:

appletScroll = 
  (Scroll2)ac.getApplet("Scroll2");

Обратите внимание на явное приведение типа для ссылки, возвращаемой методом getApplet.

Зачем мы его делаем?

При обращении к методам, специфическим для аплета Scroll2 и не определенным в классе Applet транслятору потребуется знание структуры класса Scroll2. Поэтому в начале листинга мы импортируем описание этого класса, а ссылку appletScroll определяем как поле класса Scroll2.

Последнее, что делает метод init - это изменение цвета фона аплета на желтый:

setBackground(Color.yellow);

Метод actionPerformed

Для управления анимацией в аплете Scroll2 метод actionPerformed вызывает методы start и stop класса Scroll2.

Вот как вызывается метод start:

if(appletScroll != null)
{
  if(e.getSource().equals(btnStart))
  {
    appletScroll.start();
  }
  . . .
}

Мы просто обращаемся к методу start с применением ссылки из поля appletScroll (при условии что аплет Scroll2 был найден и эта ссылка не равна null).

Аналогичным образом вызывается метод Stop:

else if(e.getSource().equals(btnStop))
{
  appletScroll.stop();
}

Метод getAppletInfo

Этот метод возвращает описание аплета в виде текстовой строки класса String:

public String getAppletInfo()
{
  return "Name: AppletControl";
}

Назад Вперед

[Назад]