Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Laboratornaya_rabota_5.doc
Скачиваний:
10
Добавлен:
05.06.2015
Размер:
2.28 Mб
Скачать

Апплет 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). Происходит, к примеру, при перезагрузке апплета (обновлении страницы).

При этом совсем не обязательно, чтобы программист переопределял сразу все эти методы.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]