Ааплети породжуються від класу Applet та імпортуються з пакетів java.appletі java.awt. Аплети виконуються під управлінням Web-броузера або програми перегляду аплетів, наприклад, appletviewer, що входить в комплект JDK.
Компільований аплет включається в HTML-файл з використанням тегу <applet> для виконання Java-сумісним броузером. На початку файлу з кодом аплету, як правило, наводяться коментарі для пояснення функції аплету, розмірів вікна тощо, наприклад,
/*
<applet code=”MyApplet” width=200 height=60>
</applet>
*/
якщо аплет MyApplet матиме вікно розмірами 200x60 пікселів.
Робота аплети керується подіями, на виникнення яких в процесі свого виконання чекає програма. Подіями є натискування клавіш, миші, взаємодія з елементами управління тощо. Класи пакету java.awt інформують аплет про виникнення події викликом обробника події, який реалізований в аплеті. Після виконання відповідного коду обробника управління передається до компонент java.awt. Взаємодію з аплетом ініціює користувач в довільний момент часу.
Скелетна схема аплету.Всі аплети, крім найбільш тривіальних, перевизначають набір методів для забезпечення сценарію роботи програми, а броузер чи програма перегляду взаємодіє з аплетом і керує його виконанням. Чотири основних методи – init(), start(), stop(), destroy() – визначені в класі Applet. П‘ятий метод, paint(), визначений класом Component з пакетуjava.awt. Всі зазначені методи мають реалізацію за замовчуванням. В аплетах не перевизначаються методи, які не використовуються. Всі п’ять методів можна зібрати в наступну скелетну схему:
import java.awt.*;
import java.applet.*;
/*
<applet code=”AppletSkel” width=300 height=100>
</applet>
*/
public class AppletSkel extends Applet {
public void init() { //викликається першим
//ініціалізація
}
public void start(){//викликається другим для перезапуску аплету
//початок чи продовження виконання
}
public void stop() {//викликається, коли аплет треба зупинити
}
public void destroy(){// аплет завершується , останній виконуваний метод
//виконує завершальні дії
}
public void paint (Graphics g){ //вікно повинно бути перемальовано
//повторний показ вмісту вікна
}
}
Скелет нічого не виконує, але може компілюватись і бути запущеним.
Порядок, в якому викликаються методи, зображені в скелетній схемі. Коли аплет починає виконуватися, методи в такій послідовності: init(), start(),paint().
При завершенні аплету має місце наступна послідовність викликів: stop(), destroy().
Розглянемо методи детальніше. Метод initпризначений для ініціалізації змінних. Він викликається один раз за час виконання аплету. Методstartзапускається відразу після init. Він також викликається для повторного запуску аплета після зупинки. Метод startзапускається кожного разу, як HTML-документ аплету відображається на екрані. Якщо користувач покидає Web-сторінку і потім знов повертається, аплет запускається на виконання методом start .
Метод paintвикликається кожного разу принеобхідності перемалювати вікно аплету. Це відбувається, якщо аплет з’являється на екрані (аплет починає виконуватись) після згортання вікна або перекриття іншим вікном тощо. Метод paintмає параметр типу Graphics графічного контексту для опису графічного середовища, в якому виконується аплет. Даний контекст використовується при необхідності відобразити щось в аплеті.
Методstopвикликається, якщо Web-броузер при переході на іншу сторінку покидає HTML-документ з даним аплетом. Після виклику метода stop() , виконання аплету можна продовжитти. Метод stopвикористовується для зупинки потоків, які не потребують виконання, тобто коли аплет є невидимим. Робота потоків продовжується викликом методом start , якщо користувач повертається на сторінку.
Метод destroyвикликається при необхідності звільнити пам’ять, виділеної для аплету. Аплет знищується. В даному методі необхідно звільнити ресурси, які використовувались аплетом. Перед виконанням destroyзавжди викликається stop .
Наведемо приклад аплету, який встановлює колір фону голубим, колір переднього плану (символів) – червоним і видає повідомлення.
import java.awt.*;
import java.applet.*;
/*
<applet code=”Sample” width=300 height=50>
</applet>
*/
public class MyApplet extends Applet {
String msg; // стрічка для тексту
public void init () {
setBackground(Color.cyan); // колір фону
setForeground(Color.red); // колір переднього плану
msg=”Inside init() --”; // заповнення тексту
}
public void start(){
msg+=” Inside start() --”; // метод доповнює текст
}
public void paint(Graphics g){
msg+=” Inside paint().”; // метод доповнює текст
g.drawString(msg,10,30); // метод виводить текст
}
}
Наведений приклад аплету не містить методів stopтаdestroy, які завжди викликаються при закритті сторінки.