- •Лекція 10. Аплети
- •1. Загальні відомості про аплети
- •Аплети в порівнянні з додатками
- •2. Створення аплетів
- •Включення аплету в html-документ
- •Необов'язкові атрибути аплету
- •Найпростіший Java-аплет
- •Аналіз роботи аплету Draw Applet
- •Опис роботи аплету Internet Applet
- •Аплет з елементами управління
- •Опис методу init()
- •Опис методу action()
Найпростіший Java-аплет
Нарешті можна написати перший Java-аплет. Мова програмування Java і бібліотеки дозволяють створювати будь-які аплети – прості і складні. Можна написати найпростіший Java-аплет всього з декількох рядків коду, що показано в лістингу 10.6.
Лістинг 10.6. MyApplet.java. Найпростіший Java-аплет
import java.applet.*;
public class MyApplet extends Applet
{
}
Перший рядок коду повідомляє компілятору Java про те, що даний аплет буде використовувати деякі або всі класи, описані в пакеті applet (зірочка використовується як групове ім'я, подібно іменам файлів в DOS). Всі основні властивості аплету реалізовані в цих класах, ось чому ви можете написати працездатний аплет, використовуючи всього кілька рядків.
У другому рядку коду оголошується новий клас MyApplet. Цей новий клас оголошується як public, тому до даного класу можна звертатися, коли аплет буде працювати в середовищі Web-браузера або в програмі Appletviewer. Якщо клас аплету не оголосити як public, код буде компілюватися без помилок, проте аплет не запуститься. Тому всі класи аплетів повинні бути public.
Зауваження
Як можна бачити, при оголошенні класу аплету використовуються переваги принципу успадкування (що відноситься до ООП) і новий клас породжується від Java-класу Applet. Таке успадкування майже не відрізняється від того, яке ви використовуєте при створенні власної ієрархії класів. Відмінність лише в тому, що клас Applet створений не вами, а включений до пакету Java Developer's Kit (JDK).
Ви дійсно можете скомпілювати аплет, показаний в лістингу 10.6. Після цього з'явиться файл MyApplet.class, що являє собою виконуваний файл байт-кодів. Для запуску аплету досить створити HTML-документ, схожий на той, який показаний в лістингу 10.7. Однак якщо ви запустите аплет MyApplet, то нічого не побачите ні в програмі Appletviewer, ні в вашому браузері.
Лістинг 10.7. MYAPPLET.HTML.НТМL-документ з аплетом MyApplet
<title>Applet Test Page</title>
<hl>Applet Test Page</hl>
<applet
code="MyApplet.class"
width=250
height=250
name="MyApplet">
</applet>
Аплет, який малює на екрані
Хоча більшість аплетів досить прості, існують деякі моменти, які необхідно знати при написанні власних аплетів. По-перше, ви повинні вміти створювати екран вашого аплету. Для цього використовується Java-клас Graphics; крім того потрібно знати, як вибудовувати в логічному порядку керуючі елементи, такі як текстові вікна і кнопки.
Інший важливий момент – обробка подій. Подібно до інших програм, що працюють у віконному середовищі, Java-аплет отримує безліч повідомлень від системи і від користувача. Ваш аплет повинен обробляти ці повідомлення, які відповідають тій задачі, яку він виконує.
Наприклад, обробка рухів миші не належить до тих подій, які ви повинні часто використовувати в своїх аплетах, але цю корисну можливість варто мати в розпорядженні. Наприклад, якщо ви пишете ігровий аплет, який використовує мишу в якості пристрою введення, може знадобитися відстежувати її переміщення. Найчастіше миша використовується в графічних програмах, які дозволяють малювати на екрані. У лістингу 10.8 показаний такий аплет. Лістинг 10.9 містить НТМ-документ, що завантажує і запускає даний аплет.
Лістинг 10.8. DrawApplet.java. Аплет DrawApplet
import java.awt.*;
import java.applet.*;
public class DrawApplet extends Applet {
Point startPoint;
Point points[];
int numPoints;
boolean drawing;
public void init()
{
startPoint = new Point(0, 0);
points = new Point 11000];
numPoints = 0;
drawing = false;
resize(400, 300);
}
public void paint(Graphics g)
{
int oldX = startPoint.x;
int oldY = startPoint.у;
for (int x=0; x<numPoints; ++x) {
g.drawLine(oldX, oldY, points[x].x, points[x].y);
oldX = points[x].x;
oldY = points[x].y;
}
}
public boolean mouseDown(Event evt, int x, int y)
{
if (!drawing) {
drawing = true;
startPoint.x = х;
startPoint.y = у;
}
else
drawing = false;
return true;
}
public boolean mouseMove (Event evt, int x, int y)
{
if ((drawing) && (numPoints < 1000)) {
points[numPoints] = new Point(x, y);
++numPoints;
repaint();
}
return true;
}
}
Лістинг 10.9. DRAWAPPLET.HTML. HTML-документ для аплету DrawApplet
<title>Applet Test Page</title>
<hl>Applet Test Page</hl>
<applet
code="DrawApplet.class"
width=400
height=400
name="DrawApplet">
</applet>
Коли ви запустите аплет DrawApplet за допомогою програми Appletviewer, то побачите порожнє вікно. Клацніть мишею у вікні для вибору початкової точки і потім ведіть її по вікну. При русі покажчика миші за ним буде залишатися чорна лінія (рис. 10.3). Хоча ця програма малювання дуже проста, вона дає деяке уявлення про те, як можна використовувати мишу для рішення інших подібних задач.
Рис. 10.3. Аплет DrawApplet реагує на повідомлення, що супроводжують рух і клацання миші
