1. Познакомиться с библиотекой java.applet и классом java.applet.Applet
2. Научится обрабатывать события в аплетах.
3. Освоить работу с управляющими компонентами и менеджерами размещения.
4. Применить полученные знания на практике
Ознакомиться с материалом, предоставленным в приложениях к данным методическим указаниям. Ознакомиться с текстом задания к лабораторной работе и написать программу.
o На основе оконного приложения, созданного в лабораторной работе №5 «Программирование графики и обработка событий», разработать аплет – калькулятор
Отчет должен содержать:
1. Постановку задачи, решаемой отлаженной программой.
2. Руководство пользователя отлаженной программы, содержащее описание интерфейсов всех функций программы.
3. Листинг программы с необходимыми комментариями.
1. В случае, если программа – аплет состоит из нескольких классов и после компиляции сгенерировано несколько файлов *.class, как внутри контейнера <applet></applet> html – файла это необходимо указать?
2. Сколько классов в пакете java.applet?
3. Как изменится работа программы, если внутри блока switch(){} не записывать операторы break.
4. Модифицируйте аплет так, чтобы коэффициент, на который умножается результат, был случайным числом (метод random() класса java.lang.Math)
5. Добавьте текстовым полям слушателей и обработчики событий ActionEvent(). Обработчики также должны вызывать метод вывода результата.
Официальные источники:
1. Кен Арнольд, Джеймс Гослинг, Дэвид Холмс. Язык программирования Java™.
2. Официальный сайт Java — http://java.sun.com/ (есть раздел на русском языке с учебником).
3. Java™ 2 SDK, Standard Edition Documentation —
4. Джеймс Гослинг, Билл Джой, Гай Стил. СпецификацияязыкаJava (TheJavaLanguageSpecification. Перевод на русский язык — http://www.uni-vologda.ac.ru/java/jls/index.html
5. Официальный сайт проекта Eclipse — http://www.eclipse.org/.
Другое:
1. Дмитрий Рамодин. Начинаем программировать на языке Java.
2. Николай Смирнов. Java 2: Учебное пособие.
3. Картузов А. В. Программирование на языке Java.
4. Вязовик Н.А. Программирование на Java.
5. Алексей Литвинюк. Введение в интегрированную среду разработки Eclipse.
Аплеты — это программы, работающие в среде другой программы — браузера. Аплеты не нуждаются в окне верхнего уровня — им служит окно браузера. Они не запускаются JVM — их загружает браузер, который сам запускает JVM для выполнения аплета. Эти особенности отражаются на написании программы – аплета.
С точки зрения языка Java, аплет — это всякое расширение класса Applet, который, в свою очередь, расширяет класс panel. Таким образом, аплет — это панель специального вида, контейнер для размещения компонентов с дополнительными свойствами и методами. Менеджером размещения компонентов по умолчанию, как и в классе Panel, служит FlowLayout. Класс Applet находится в пакете java.applet, в котором кроме него есть только три интерфейса, реализованные в браузере. Надо заметить, что не все браузеры реализуют эти интерфейсы полностью.
Поскольку JVM не запускает аплет, отпадает необходимость в методе main(), его нет в аплетах.
В аплетах редко встречается конструктор. Дело в том, что при запуске первого создается его контекст. Во время выполнения конструктора контекст еще не сформирован, поэтому не все начальные значения удается определить в конструкторе.
Начальные действия, обычно выполняемые в конструкторе и методе main(), в аплете записываются в метод init() класса Applet. Этот метод автоматически запускается исполняющей системой Java браузера сразу же после загрузки аплета. Вот как он выглядит:
public void init(){}
Метод init () не имеет аргументов, не возвращает значения и должен переопределяться в каждом аплете — подклассе класса Applet. Обратные действия — завершение работы, освобождение ресурсов — записываются при необходимости в метод destroy(), тоже выполняющийся автоматически при выгрузке аплета. В классе Applet есть пустая реализация этого метода.
Кроме методов init() и destroy() в классе Applet присутствуют еще два пустых метода, выполняющихся автоматически. Браузер должен обращаться к методу start() при каждом появлении аплета на экране и обращаться к методу stop(),когда аплет уходит с экрана. В методе stop() можно определить действия, приостанавливающие работу аплета, в методе start() — возобновляющие ее. Надо сразу же заметить, что не все браузеры обращаются к этим методам как должно. Работу указанных методов можно пояснить простым житейским примером.
Приехав весной на дачный участок, вы прокладываете водопроводные трубы, прикручиваете краны, протягиваете шланги — выполняете метод init() для своей оросительной системы. После этого, приходя на участок, включаете краны — запускаете метод start(), а уходя, выключаете их — выполняете метод stop(). Наконец, осенью вы разбираете оросительную систему, отвинчиваете краны, просушиваете и укладываете водопроводные трубы — выполняете метод destroy().
Все эти методы в аплете необязательны. В примере 1 записан простейший аплет, выполняющий программу HelloWorld.
Пример 1. аплет HelloWorld
import java.awt.*;
import java.applet.*;
public class HelloWorld extends Applet{
public void paint(Graphics g){
g.drawstring("Hello, XXI century World!", 10, 30);
}
}
Эта программа записывается в файл HelloWorld.java и компилируется как обычное приложение:
Компилятор создает файл HelloWorld.class, но воспользоваться для его выполнения интерпретатором java теперь нельзя — нет метода main(). Вместо интерпретации надо дать указание браузеру для запуска аплета.
Указание браузеру на запуск аплета дается в теге <applet>. В нем обязательно задаются:
имя файла с классом аплета параметром code;
ширина width и высота height панели аплета в пикселах. Полностью текст HTML для нашего аплета приведен в примере 2.
Пример 2. Файл HTML для загрузки аплета HelloWorld
<html>
<head><title> Applet</title></head> <body>
Нижевыполняется аплет.<br>
<applet code = "HelloWorld.class" width = "200" height = "100">
</applet>
</body>
</html>
Этот текст заносится в файл с расширением html или htm, например, HelloWorld.html. Имя файла произвольно, никак не связано с аплетом или классом аплета.
Оба файла — HelloWorld.html и HelloWorld.class — помещаются в один каталог на сервере, и файл HelloWorld.html загружается в браузер, который может находиться в любом месте сервера. Браузер, просматривая HTML-файл, выполнит тег <applet> и загрузит аплет. После загрузки аплет появится в окне браузера, как показано на рисунке 1.
Рисунок 1. Аплет HelloWorld вокне Internet Explorer
В этом простом примере можно заметить еще две особенности аплетов. Во-первых, размер аплета задается не в нем, а в теге <applet>. Это очень удобно, можно менять размер аплета, не компилируя его заново. Можно организовать аплет невидимым, сделав его размером в один пиксел. Кроме того, размер аплета разрешается задать в процентах по отношению к размеру окна браузера, например,
<applet code = "HelloWorld.class" width = "100%" height = "100%">
Во-вторых, как видно на рис. 1, у аплета серый фон. Такой фон был в первых браузерах, и аплет не выделялся из текста в окне браузера. Теперь в браузерах принят белый фон, его можно установить обычным для компонентов методом setBackground(Color.white), обратившись к нему в методе init ().
В состав JDK любой версии входит программа appietviewer. Это простейший браузер, предназначенный для запуска аплетов в целях отладки.
На рисунке 2 appletviewer показывает аплет HelloWorld.
Рисунок 2. Аплет HelloWorld в окне программы appletviewer
Замечание по отладке
Браузеры помещают загруженные аплеты в свой кэш, поэтому после щелчка кнопкой мыши по кнопке Refresh или Reload запускается старая копия аплета из кэша Для загрузки новой копии надо при щелчке по кнопке Refresh в IE (Internet Explorer) держать нажатой клавишу <Ctrl>, а при щелчке по кнопке Reload в NC (Netscape Communicator) — клавишу <Shift> Иногда и это не помогает. Не спасает даже перезапуск браузера. Тогда следует очистить оба КЭШа – и дисковый, и кэш в памяти. В IE это выполняется кнопкой Delete Files в окне, вызываемом выбором команды Tools | Internet Options. B NC необходимо открыть окно Cache командой Edit | Preferences | Advanced.
При запуске приложения интерпретатором java из командной строки в него можно передать параметры в виде аргумента метода main (string [] args). В аплеты также передаются параметры, но другим путем.
Передача параметров
Передача параметров в аплет производится с помощью тегов <param>, располагаемых между открывающим тегом <applet> и закрывающим тегом </applet> в HTML-файле. В тегах <param> указывается название параметра name и его значение value.
В аплете для приема каждого параметра надо воспользоваться методом getParameter (String name) класса Applet, Возвращающим строку типа String. В качестве аргумента этого метода задается значение параметра name в виде строки, причем здесь не различается регистр букв, а метод возвращает, значение параметра value тоже в виде строки.