Апплет HelloWorld
import javax.swing.JApplet;
import java.awt.Graphics;
public class HelloWorld extends JApplet {
public void paint(Graphics g) {
g.drawRect(0, 0,
getSize().width - 1,
getSize().height - 1);
g.drawString("Hello world!", 5, 15);
}
}
Данный код необходимо запустить в режиме Run as Java Applet. В итоге на экране появится окно appletviewer, в котором будет написана лишь одна строчка: « Hello world!».
Если апплет использует GUI компоненты из Swing, необходимо наследование от javax.swing.JApplet.
В случае, если Swing не используется, можно наследоваться от java.applet.Applet.
Конвертация приложений в апплеты
Как нетрудно заметить, вышеизложенный код не содержит метода main. В этом апплеты значительно отличаются от обычных приложений, в которых есть, по крайней мере, один класс с методом main. Вместо этого в апплетах за время исполнения вызываются несколько разных методов.
Что нужно, чтобы превратить приложение в апплет:
Нужно создать класс-наследник java.applet.Applet, в котором переопределить метод init, в котором проинициализировать все необходимые ресурсы (точно так же, как это происходило в методе main).
Метод init может вызываться многократно (в отличие от метода main), следует учесть это при его проектировании. + Panel (если используется таковая) на вершине иерархии должна добавляться в апплет в методе init (так же как это обычно происходило в методе main).
Вот и всё!
Замечания:
Класс апплета объявлен как public (чтобы appletviewer имел к нему доступ).
Апплет наследуется от Applet/JApplet, а приложение от Frame/JFrame.
У апплета нет метода main.
В апплете конструктор заменен методами start and init methods.
GUI компоненты добавляются напрямую в Applet, в то время как в случае с обычным приложением эти компоненты добавляются в content JFrame'a.
Жизненный цикл апплета
import java.applet.Applet;
import java.awt.Graphics;
// Нет необходимости наследоватьот JApplet, т.к. компоненты не добавляются —
// проиcходит просто отрисовка
public class Simple extends Applet {
StringBuffer buffer;
public void init() {
buffer = new StringBuffer();
addItem("initializing... ");
}
public void start() {
addItem("starting... ");
}
public void stop() {
addItem("stopping... ");
}
public void destroy() {
addItem("preparing for unloading...");
}
private void addItem(String newWord) {
System.out.println(newWord);
buffer.append(newWord);
repaint();
}
public void paint(Graphics g) {
// Рисуем прямоугольник
g.drawRect(0, 0,
getWidth() - 1,
getHeight() - 1);
// Отрисовываем строчку внутри прямоугольника
g.drawString(buffer.toString(), 5, 15);
}
}
Таким образом, апплет может:
Инициализировать себя (метод init).
Начать работу (метод start).
Перестать работать (метод stop). Происходит, когда пользователь открывает другую страницу. Если же он возращается назад выполняется метод start.
Произвести финальную очистку данных перед тем как выгрузиться (cначала выполняется метод stop, потом destroy). Происходит, к примеру, при перезагрузке апплета (обновлении страницы).
При этом совсем не обязательно, чтобы программист переопределял сразу все эти методы.