Электронная библиотека книг Александра Фролова и Григория Фролова.
Shop2You.ru Создайте свой интернет-магазин
Библиотека
Братьев
Фроловых
[Назад]

Библиотека примеров приложений Java

Оглавление
Консольное приложение

Простейший аплет
Аплет с параметрами
Комбинированное приложение
Консольное с окном Frame
Аплет с окном Frame
Комбинированное с окном Frame
Библиотека классов
Аплет с обработкой событий
Консольное с обработкой событий

Назад Вперед

2.2. Простейший аплет

На простом примере мы рассказываем о структуре однопоточного аплета. При этом мы перечисляем методы, переопределяемые в главном классе аплета, унаследованном от класса Applet, и даем их краткое описание.

Исходный текст примера

Архив проекта для Java WorkShop 2.0

Демонстрация
(ваш браузер должен уметь работать с аплетами Java)

Немного теории

Главный класс аплета создается на базе класса java.applet.Applet. В нем обычно переопределяются несколько методов, отвечающих за инициализацию аплета, перерисовку его окна, получение информации об аплете и так далее.

Обычно минимальный набор переопределяемых методов однопоточного аплета такой:

  • init
  • destroy
  • paint
  • getAppletInfo

Метод init получает управление один раз при инициализации аплета. Обычно он выполняет установку начальных значений в полях класса, получает какие-либо ресурсы, необходимые для работы аплета или предпринимает другие инициализирующие действия.

Назначение метода destroy прямо противоположное по сравнению с назначением метода init. Он предназначен для освобождения ресурсов, полученных приложением в методе init. Заметим, что области оперативной памяти освобождаются автоматически системой сборки мусора. Что же касается таких ресурсов, как, например, канал связи с расширением сервера Web или поток ввода/вывода, связанный с файлом, то его необходимо закрывать явным образом.

Метод paint выполняет всю работу по рисованию в окне аплета. Как правило, только этот метод и занимается рисованием. Исключение составляют многопоточные аплеты, предназначенные для отображения анимации.

Что касается метода getAppletInfo, то его переопределять необязательно. Однако при помощи данного метода другие аплеты могут получить информацию о вашем аплете.

Многопоточные аплеты переопределяют еще два метода:

  • start
  • stop

Первый из них получает управление, когда документ HTML с аплетом появляется в окне браузера, а второй - когда изчезает. Метод start обычно запускает дополнительные потоки на выполнение при активизации аплета. Метод stop останавливает потоки, когда документ с аплетом исчезает из окна браузера.

Описание примера

Наш простейший аплет рисует в своем окне текстовую строку. При этом мы устанавливаем цвет фона окна аплета, выбираем шрифт для изображения текстовой строки, задаем цвет текста и размер символов (рис. 1).

pic1.gif (1974 bytes)

Рис. 1. Окно простейшего аплета

Рассмотрим исходный текст аплета.

Так как главный класс аплета наследуется от класса java.applet.Applet, мы включаем этот класс оператором import:

import java.applet.Applet;
import java.awt.*;

Дополнительно нам потребуется класс AWT (Abstract Window Toolkit), так как с помощью его методов мы будем рисовать в окне аплета.

Определение главного класса выглядит следующим образом:

public class SimpleApplet extends Applet
{
  String szAppName;
  
  public void init()
  {
    . . .
  }
  public String getAppletInfo()
  {
    . . .
  }
  public void paint(Graphics g)
  {
    . . .
  }
}

Мы унаследовали класс SimpleApplet от класса Applet, воспользовавшись для этого ключевым словом extends.

В классе SimpleApplet определено поле szAppName класса String и переопределены следующие методы: init, getAppletInfo и paint. Так как метод init не заказывает никаких ресурсов, нам не потребовалось переопределять метод destroy.

Метод init получает управление при инициализации аплета. Он записывает название приложения в поле szAppName, а затем устанавливает цвет фона и цвет текста:

szAppName = new String("SimpleApplet");
setBackground(Color.yellow);
setForeground(Color.black);

Метод getAppletInfo возвращает текстовую строку класса String, комбинируя ее из строки "Name:" и названия приложения, записанного методом init в поле szAppName:

public String getAppletInfo()
{
  return "Name:" + szAppName;
}

Что же касается метода paint, то в нем мы вначале устанавливаем красный цвет текста:

g.setColor(Color.red);

Установка выполняется методом setColor, который вызывается для объекта g класса Graphics. Этот объект является контекстом отображения окна аплета и передается методу paint через его единственный параметр.

Далее метод paint устанавливает в контексте отображения новый шрифт типа Helvetica. Размер символов устанавливается равным 24 пикселам. В добавок мы выделяем текст, делая его жирным:

g.setFont(new Font(
  "Helvetica", Font.BOLD, 24));

Установив в контексте отображения все необходимые атрибуты, метод paint отображает строку, вызывая метод drawString:

g.drawString("Applet " + szAppName, 10, 30);

Рисование строки начинается в точке, имеющей координаты (10, 30).

Назад Вперед

[Назад]