Хотя автономные приложения, вероятно, более важны, чем апплеты на данном этапе истории Java, апплеты по-прежнему широко используются. Они могут делать на веб-страницах то, что нелегко сделать с помощью других технологий. Распространять апплеты среди пользователей несложно: пользователю достаточно открыть веб-страницу, и апплет уже там, без специальной установки (хотя у пользователя должна быть установлена ​​соответствующая версия Java на его компьютере). И, конечно же, апплеты — это весело; теперь, когда Интернет стал такой обычной частью жизни, приятно иметь возможность видеть свою работу на веб-странице.

Хорошая новость заключается в том, что написание апплетов мало чем отличается от написания автономных приложений. Структура апплета по существу такая же, как структура JFrames, которые были представлены в предыдущем разделе, и события обрабатываются одинаково в программах обоих типов. Таким образом, большая часть того, что вы узнаете о приложениях, применима к аплетам, и наоборот.

Конечно, одно отличие состоит в том, что апплет зависит от веб-страницы, поэтому для эффективного использования апплетов необходимо хотя бы немного научиться создавать веб-страницы. Веб-страницы пишутся с использованием языка под названием HTML (язык гипертекстовой разметки). В подразделе 6.2.3 ниже вы узнаете, как использовать HTML для создания веб-страниц, отображающих апплеты.

JApplet

Класс JApplet (в пакете javax.swing) можно использовать в качестве основы для написания апплетов так же, как JFrame используется для написания автономных приложений. Базовый класс JApplet представляет собой пустую прямоугольную область. Поскольку апплет не является самостоятельным приложением, эта область должна отображаться на веб-странице или в какой-либо другой среде, которая знает, как отображать апплет. Как и JFrame, JApplet содержит панель содержимого (и может содержать строку меню). Вы можете добавить содержимое в апплет либо путем добавления содержимого на его панель содержимого, либо путем замены области содержимого другим компонентом. В своих примерах я обычно создаю панель JPanel и использую ее вместо панели содержимого апплета.

Чтобы создать апплет, вы напишете подкласс JApplet. Класс JApplet определяет несколько методов экземпляра, уникальных для апплетов. Эти методы вызываются средой апплета в определенные моменты «жизненного цикла» апплета. В самом классе JApplet эти методы ничего не делают; вы можете переопределить эти методы в подклассе. Наиболее важным из этих специальных методов апплета является

публичная недействительная инициализация ()

Метод init() апплета вызывается при создании апплета. Вы можете использовать метод init() как место, где вы можете настроить физическую структуру апплета и обработку событий, которая будет определять его поведение. (Вы также можете выполнить некоторую инициализацию в конструкторе для вашего класса, но есть определенные аспекты среды апплета, которые настраиваются после вызова его конструктора, но до вызова метода init(), поэтому есть несколько операций, которые будут работают в методе init(), но не будут работать в конструкторе.) Другими методами жизненного цикла апплета являются start(), stop() и destroy(). Я пока не буду использовать эти методы и не буду обсуждать их здесь, за исключением упоминания о том, что destroy() вызывается в конце жизни апплета и может использоваться как место для выполнения любой необходимой очистки, например закрытия любых окон. которые были открыты апплетом.

Имея это в виду, мы можем посмотреть на наш первый пример JApplet. Это, конечно же, апплет, который говорит «Hello World!». Чтобы сделать его более интересным, я добавил кнопку, изменяющую текст сообщения, и переменную состояния currentMessage, которая содержит текст текущего сообщения. Этот пример очень похож на автономное приложение HelloWorldGUI2 из предыдущего раздела. Он использует класс обработки событий для ответа, когда пользователь нажимает кнопку, панель для отображения сообщения и другую панель, которая служит контейнером для панели сообщений и кнопки. Вторая панель становится панелью содержимого апплета. Вот исходный код апплета; опять же, вы не должны понимать все детали в это время.