Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Основи мови JavaScript.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
1.04 Mб
Скачать

6.1. Вбудовування аплета Java у документ html

Для того щоб вбудувати аплет у документ HTML, необхідно скористатися оператором <APPLET>, наприклад:

<APPLET

CODE=MyApplet. class NAME="MyApplet" ID=MyApplet WIDTH=320 HEIGHT=240>

</APPLET>

Припустимі параметри оператора <APPLET>:

Парамemp Опис

ALIGN Вирівнювання вікна аплета щодо навколишнього його тексту. Можливі такі значення:

LEFT - вирівнювання вліво щодо навколишнього тексту; CENTER - центрування; RIGHT - вирівнювання вправо щодо навколишнього тексту; ТОР - вирівнювання по верхній межі; MIDDLE - центрування по вертикалі; BOTTOM - вирівнювання по нижній межі.

ALT С поміччю цього параметра можна задати текст, що буде відображатися у вікні аплета в тому випадку, якщо браузер не може працювати з аплетами Java

CODE Ім'я двоичного файла, що містить код аплета. По умовчанню шлях до цього файла вказується щодо каталога з файлом HTML, куди умонтований аплет. Таке поводження може бути змінено параметром CODEBASE

CODEBASE Базова адреса URL аплета, тобто шлях до каталога, що містить аплет.

HEIGHT Початкова ширина вікна аплета в пикселях.

WIDTH Початкова висота вікна аплета в пикселях.

HSPACE Зазор зліва і справа від вікна аплета.

VSPACE Зазор поверх і знизу від вікна аплета.

NAME Ім'я аплета. Воно може бути використано іншими аплетами, розташованими в тому самому документі HTML, а також сценаріями JavaScript.

TITLE Рядок заголовка/

Додатково між операторами <APPLET> і </APPLET> можна задати параметри аплета. Для цього використовується оператор <PARAM>.

Користуючи операторами <PARAM>, розташованими в документі HTML відразу після оператора <APPLET>, можна передати аплету довільна кількість параметрів, наприклад у виді текстових рядків:

<APPLET CODE=MyApplet.class NAME="MyApplet" ID=MyApplet WIDTH=320 HEIGHT=240>

<PARAM NAME=ParamName1 VALUE="Param Value 1">

<PARAM NAME=ParamName2 VALUE="Param Value 2">

<PARAM NAME=ParamName3 VALUE="Param Value 3">

<PARAM NAME=ParamName4 VALUE="Param Value 4">

</APPLET>

Тут через параметр NAME оператора <PARAM> передається ім'я параметра аплета, а через параметр VALUE - значення відповідного параметра.

6.2. Виклик методів аплета Java із сценарію JavaScript

Сценарій JavaScript може одержати доступ до полів і методів аплетов, розташованих у документі HTML, адресуючись до аплетам як до елементів масиву document.applets.

Наприклад, для доступу до першому аплету можна використовувати стокові document.applets[0]. Проте зручніше вказувати ім'я аплета, задане в параметрі NAME оператора <APPLET>, наприклад document. MyApplеt.

Як приклад можна показати, як викликати зі сценарію JavaScript методи аплета Rectangles, описаного в згаданому вище 32-м томі "Бібліотеки системного програміста". Цей аплет малює і своєму вікні прямокутники випадкового розміру, зафарбовані випадковим цвітом.

Документ HTML створюється розміщенням у ньому аплета Rectangles і форми з кнопками Start Animation і Stop Animation.

Відразу після завантаження документа у вікні аплета запускается процес анимации. Якщо натиснути кнопку Stop Animation, малювання нових прямокутників буде припинено. За допомогою кнопки Start Animation можна відновити процес малювання.

Зауважимо, що, якщо помістити курсор миші в область вікна аплета, анимация буде зупинена, а коли курсор миші покине межі вікна аплета - знову запущена. Проте таке поводження визначається самим аплетом і не має відношення до сценарію JavaScnpt.

Вихідний текст документа HTML, що містить аплет і форму з кнопками, поданий у листинге 6.1.

Листинг 6.1. Файл chapter6/Rectangles/Rectangles. html

<HTML>

<HEAD>

<TITLE>Rectangles</TITLE>

</HEAD>

<BODY>

<HR>

<APPLET CODE=Rectangles.class NAME="Rectangles" ID=Rectangles WIDTH=320 HEIGHT=240>

</APPLET>

<HR>

<FORM>

<INPUT TYPE="buttor." VALUE="Start Animation" onClick="document.Rectangles.start()">

<INPUT TYPE="button" VALUE="Stop Animation" onClick="document.Rectangles.stop()">

</FORM>

<A HREF="Rectangles.java">The source.</A>

</BODY>

</HTML>

Тут параметр NAME оператора <APPLET> задає ім'я аплета як rectangles.

Коли користувач натискає на кнопку Start Animation, керування одержує оброблювач події onClick, визначений у такий спосіб:

onClick="document. Rectangles. start()"

Цей оброблювач викликає метод start, визначений в аплете Rectangles. Цей метод запускає анимацию у вікні аплета, якщо вона була зупинена.

Аналогічно оброблювач події onClick кнопки Stop Animation викликає метод stop, також визначений в аплете Rectangles і призначений для припинення анимации:

onClick="document. Rectangles. stop()"

Вихідний текст аплета Rectangles відтворений у листинге 6.2. Докладний опис цього аплета можна знайти в поділі "Додаток Rectangles" першого розділу 32-го тому "Бібліотеки системного програміста".

Листинг 6.2. Файл chapter6/Rectangles/Rectangles. java

// Малювання прямокутників в окремій задачі

//

// (С) Фролов А. У, 1997, 1998

//

//.E-mail: frolov@glas.apc.org

// WWW: http://www.glasnet.ru/~frolov

// або

// http://www.dials-ccas.ru/frolov

import java.applet.*;

import java.awt.*;

import java.util.*;

public class Rectangles extends Applet implements Runnable

{

// Посилання на задачу малювання прямокутників

Thread m_Rectangles = null;

// --------------------------------------------------------------

// getAppletInfo

// Метод, що повертає рядок інформації про аплете

//------------------------------------------

public String getAppletInfo()

{

return "Name: Rectangles\r\n" +

"Author: Alexandr Frolov\r\n" +

"E-mail: frolov@glas.apc.org" +

"WWW: http://www.glasnet.ru/~frolov" +

"Created with Microsoft Visual J++ Version 1.0";

}

//------------------------------------------

// paint

// Метод paint, що виконує малювання у вікні аплета

//------------------------------------------

public void paint(Graphics g)

{

// Визначаємо поточні розміри вікна аплета

Dimension dimAppWndDimension = size();

// Вибираємо в контекст відображення жовтий цвіт

g.setColor(Color.yellow);

// Зафарбовуємо внутрішню область вікна аплета

g.fillRect(0, 0,

dimAppWndDimension.width - 1,

dimAppWndDimension.height - 1);

// Вибираємо з контекст відображення чорний цвіт

g.setColor(Color.black);

// Малюємо рамку навколо вікна аплета

g.drawRect(0, 0,

dimAppWndDimension.width - 1,

dimAppWndDimension.height - 1);

}

//------------------------------------------------------

// start

// Метод визивається при першому відображенні вікна аплета

//------------------------------------------------------

public void start()

{

if(m_Rectangles == null)

{

m_Rectanales = new Thread(this);

m_Rectangles.start();

}

}

//------------------------------------------------------

//stop

// Метод визивається, коли вікно аплета зникає з екрана

//------------------------------------------------------

public void stop()

{

if(m_Rectangles != null)

{

m_Rectangles.stop();

m_Rectangles = null;

}

}

//------------------------------------------------------

// run

// Метод, що працює в рамках окремої задачі

// Він малює у вікні аплета прямокутники випадкового

// цвіти, розміру і розташування

//------------------------------------------------------

public void run()

{

// Одержуємо контекст відображення для вікна аплета

Graphics g = getGraphics();

// Визначаємо поточні розміри вікна аплета

Dimension dimAppWndDimension = size();

while (true)

{

int x, у, width, height;

int rColor, gColor, bColor;

// Вибираємо випадковою уявою розміри

//і розташування що малюється прямокутника х = (int)(dimAppWndDimension.width * Math. random());

у = (int)(dimAppWndDimension.height * Math.random());

width = (int)(dimAppWndDimension. width * Math. random()) / 2;

height = (int)(dimAppWndDimension. height * Math. random () / 2;

// Вибираємо випадковий цвіт для малювання

// прямокутника

rColor = (int) (255 * Math.random());

gColor = (int) (255 * Math.random());

bColor = (int) (255 * Math.random());

// Встановлюємо обраний цвіт у контексті відображення

g.setColor(new Color(rColor, gColor, bColor));

// Малюємо прямокутник

g.fillRect(x, у, width, height);

// Виконуємо затримку на 50 мс

try

{

Thread.sleep(50);

}

catch(InterruptedException e)

{

stop();

}

}

}

//----------------------------------------------

// mouseEnter

// Метод визивається, коли курсор миші надається над

// вікном аплета

//-----------------------------------------------

public boolean mouseEnter(Event evt, int x, int y)

{

if(m_Rectangles != null)

{

// Коли курсор миші надається над поверхнею

// вікна аплета, тимчасово припиняємо

// задачу малювання прямокутників

m_Rectangles.suspend();

}

return true;

}

//-----------------------------------------------

// mouseExit

// Метод визивається, коли курсор миші покидає

// вікно аплета

//-----------------------------------------------

public boolean mouseExit(Event evt, int x, int y)

{

if (m_Rectangles != null)

// Коли курсор миші покидає вікно аплета,

// відновляємо роботу задачі малювання прямокутників

m_Rectangles.resume();

}

return true;

}

}