Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

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




Листинг 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-го тому "Бібліотеки системного програміста".

 

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

//

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

//

//.E-mail: [email protected]

// 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: [email protected]" +

"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;

}

}

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.

 




Поделиться с друзьями:


Дата добавления: 2014-11-29; Просмотров: 361; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.022 сек.