КАТЕГОРИИ: Архитектура-(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; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |