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

6.3. Доступ до полів аплета Java із сценарію JavaScript

У попередньому прикладі сценарій JavaScript викликав методи, визначені в аплете Java. У такому прикладі сценарій буде обертатися до поля, визначеному в головному класі аплета.

Сценарію JavaScript доступні тільки поля і методи аплета, визначені як public.

На мал. 6.2 показаний зовнішній вигляд документа HTML, у якому розташовані один аплет і форма з одним многострочным текстовим полемо й одною кнопкою.

У вікні аплета, розташованому у верхній частині документа, знаходиться поле редагування тексту і кнопка з написом "Одержати рядок". Якщо набрати в поле редагування будь-який текстовий рядок і натиснути цю кнопку, то введений рядок буде відображена в нижній частині аплета після символу >. Такий аплет був описаний у 30-м томі "Бібліотеки системного програміста" у поділі "Додаток TxtField" гл. 5.

Якщо натиснути кнопку "Get applet info and text", те сценарій JavaScript витягне з аплета введений текстовий рядок (вона зберігається в поле з ім'ям str), а також одержить опис аплета, викликавши метод getAppletInfo, визначений в аплете.

Введений рядок і інформація про аплете будуть потім відображені сценарієм у многострочном полі редагування.

Таким чином, сценарій обертається до поля і методу, визначеним в аплете.

Вихідний текст документа HTML - у листинге 6.3.

Листинг 6.3. Файл chapter6/TxtField/TxtField. htinl

<HTML>

<НЕАD>

<TITLE>Get text</TITLE>

<SCRIPT LANGUAGE="JavaScript">

<!--

function getTextFromAoplet()

{

var szMsg="null";

GetForm.Comment.value = document.applets[0].str +

"\n" + ------------------------\n" +

document.applets[0].getAppletInfo();

}

//-->

</SCRIPT>

</HEAD>

<BODY>

<HR>

<APPLET

CODE=TxtField.class

NAME="TxtField"

ID=TxtField

WIDTH=320

HEIGHT=140>

</APPLET>

<HR>

<FORM NAME="GetForm">

<P><TEXTAREA NAME="Comment"

ROWS="7" COLS="45">

</TEXTAREA>

<P>

<INPUT TYPE="button" VALUE="Get applet info and text" onClick="getTextFromApplet();">

</FORM>

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

</BODY>

</HTML>

Для кнопки, розташованої у формі з ім'ям GetForm, визначений оброблювач події onClick:

onСlick="getTextFromApplet();"

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

Функція getTextFromApplet обертається до аплету як до найпершого елемента масиву document. applets[0]:

GetForm.Comment.value = document.applets[0].str +

"\n" + "----------------------------\n" +

document. applets[0]. getAppletInfo();

Тут записується у властивість value многострочного поля GetForm. Comment значення перемінної str, до якого доданий роздільник із символів - і рядок опису аплета, отримана від методу getAppletInfo.

Вихідний текст аплета приведений у листинге 6.4.

Листинг 6.4. Файл chapter6/TxtField/TxtField. java

// Однострочное текстове поле класу TextField

//

// (С) Фролов А.У, 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.*;

public class TxtField extends Applet

{

// Створюємо посилання на об'єкти типу TextField

TextField txt;

// Створюємо посилання на об'єкти типу Button

Button btnGetText;

// Рядок для збереження введених даних

public String str;

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

// getAppletInfo

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

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

public String getAppletInfo()

{

return "Name: TxtField\r\n" +

"Author: Alexandr Frolov\r\n" +

"E-mail: frolov@glas.ape.org\r\r." +

"WWM: htrp: //www.glasnet.ru/~frolov\r\n" +

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

}

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

// init

// Метод, що одержує керування при ініціалізації аплета

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

public void init()

{

// Створюємо що редагується однострочное текстове поле

txt = new TextField("Введіть рядок тексту", 35);

// Створюємо кнопку, за допомогою якої можна получить

// уміст текстового поля

btnGetText = new Button ("Одержати рядок");

// Добавляємо текстове поле у вікно аплете

add(txt);

// Добавляємо кнопку у вікно аплете

add(btnGetText);

// Одержуємо і зберігаємо поточний текст,

// встановлений у поле

str = txt.getText();

// Встановлюємо цвіт фона

setBackground(Color.yellow);

}

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

// action

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

// дія над компонентами

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

public boolean action(Event evt, Object obj)

{

// Посилання на кнопку, від якої пришло сообщение

Button btn;

// Перевіряємо, що подія викликана кнопкою, а не

// іншим компонентом

if(evt.target instanceof Button)

{

// Одержуємо посилання на кнопку, що викликала подія

// Перевіряємо посилання на кнопку

if(evt.target.equals (btn.GetText))

{

// Одержуємо і зберігаємо поточний текст,

// встановлений у поле

str = txt.getText();

// Перемальовуємо вікно аплета

repaint();

}

// Якщо подія виникнула від невідомої кнопки,

// ми його не опрацьовуємо

else

{

return false;

}

// Повертаємо поизнак того, що ми опрацювали подію

return true;

}

// Якщо подія викликана не кнопкою,

// ми його не опрацьовуємо

return false;

}

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

// paint

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

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

public void paint(Graphics g)

{

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

Dimension.dimAppWndDimension = size();

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

g. setColor(Color. black);

}

Цей текст відтворений із невеличкими змінами з 30-го тому "Бібліотеки системного програміста". Зміни полягають у тому, що додано до визначення поля str ключове слово public:

public String str;

Це необхідно для того, щоб поле str було доступно зі сценарію JavaScript.