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

1.1 Апплет Неllo, управляемый мышью

Класс Applet содержит большое количество методов, которые вызываются в ответ на действия пользователя (например, перемещение курсора мыши в пределах окна или нажатие определеннх клавиш на клавиатуре). Приведем в качестве примера использование метода mouseDown(), который вызывается каждый раз, когда пользователь в пределах области, занятой апплетом, нажимает левую клавишу мыши. Усовершенствованная программа Hello перерисовывает строчку текста в той точке, где пользователь щелкнул мышью.

/*------------- Пример 2. Файл Hello.java -------------*/

import java.applet.*;

import java.awt.*;

public class hello extends Applet

{ int curX=50, curY=50;

public void init()

{ resize(640,480);

}

public void paint(Graphics g)

{ g.drawString("Hello, WWW",curX,curY);

}

public boolean mouseDown(Event e,int x,int y)

{ curX=x; curY=y;

repaint();

return true;

}

}/*-----------------------------------------------------------*/

Следует обратить внимание, что в методе mouseDown() вызывается метод repaint(). Этот метод сообщает оболочке времени выполнения, что необходимо обновить изображение в окне. В ответ на это оболочка времени выполнения предает параметры экрана, содержащиеся в объекте типа Graphics, методу paint().

2. Простейший апплет HelloApplet, созданный Java Applet Wizard

Для создания шаблона апплета, на основе которого можно разрабатывать специализированные апплеты, можно воспользоваться системой автоматизированной разработки шаблонов апплета Java Аpplet Wizard, встроенной в JBuilder.

2.1 Создание шаблона апплета HelloApplet

Для создания шаблона апплета HelloApplet (пример 3) среде разработки JBuilder выбрать пункт “New” меню “File”. В появившейся диалоговой панели “Object Gallery” выбрать закладку “Web” и отметить тип “Аpplet”. В диалоговом окне “Applet Wizard” в поле “Class” следует ввести имя HelloApplet и нажать кнопку “Finish”.

В результате работы системы Java Applet Wizard будет создано два файла с исходными текстами: текст апплета (файл HelloApplet.java) и HTML-документ (файл HelloApplet.html).

2.2 Исходные файлы апплета HelloApplet

Рассмотрим тексты создаваемых файлов (комментарии, создаваемые Java Applet Wizard, переведены в данном примере на русский язык). Тексты подобных шаблонных файлов содержатся в Приложении 1 и их можно в дальнейшем использовать в качестве шаблонов апплета.

Пример 3. Файлы, созданные Java Applet Wizard

Листинг Java-файла:

******************************************************************

// HelloApplet.java: Applet

//

//*****************************************************************

import java.applet.*;

import java.awt.*;

//================================================

// Основной класс для апплета HelloApplet

//

//================================================

public class HelloApplet extends Applet

{

// Конструктор класса HelloApplet

//--------------------------------------------------------------------------

public HelloApplet()

{

// Сделать: Добавьте сюда код конструктора

}

// ОБЕСПЕЧЕНИЕ ИНФОРМАЦИИ ОБ АППЛЕТЕ:

// Метод getAppletInfo() возвращает строку, которая описывает

// апплет. Здесь можно привести такую информацию, как имя

// автора и дата создания, а также любую другую информацию

//--------------------------------------------------------------------------

public String getAppletInfo()

{

return "Name: HelloApplet\r\n" +

"Created with JBuilder";

}

// Метод init() вызывается системой при первой загрузке или

// перезагрузке апплета. Можно переопределить этот метод

// для выполнения необходимой инициализации апплета, например

// инициализации структур данных, загрузки изображений и

// шрифтов, создания окон фреймов, установки системы

// управления внешним видом или добавления элементов

// пользовательского интерфейса

//--------------------------------------------------------------------------

public void init()

{

// Если для размещения в окне апплета органов управления

// используется класс "control creator", созданный системой

// ResourceWizard, из метода init() можно вызвать метод

// CreateControls(). Следует удалить вызов метода resize()

// перед добавлением вызова метода CreateControls(),

// так как эта функция выполняет изменение размера

// окна апплета самостоятельно

//----------------------------------------------------------------------

resize(320, 240);

// Сделать: Добавьте сюда код инициализации

}

// Здесь можно разместить дополнительный код, необходимый

// для “чистого” завершения работы апплета. Метод destroy()

// вызывается, когда апплет завершает работу и будет

// выгружен из памяти

//-------------------------------------------------------------------------

public void destroy()

{

// Сделать: Добавьте сюда код завершения работы апплета

}

// Обработчик процедуры рисования окна апплета HelloApplet

//--------------------------------------------------------------------------

public void paint(Graphics g)

{

g.drawString("Created with JBuilder ",10, 20);

}

// Метод start() вызывается при первом появлении на экране

// страницы HTML с апплетом

//--------------------------------------------------------------------------

public void start()

{

// Сделать: Добавьте сюда код, который должен

// работать при запуске апплета

}

// Метод stop() вызывается, когда страница HTML с

// с апплетом исчезает с экрана

//--------------------------------------------------------------------------

public void stop()

{

// Сделать: Добавьте сюда код, который должен

// работать при остановке апплета

}

// Сделать: Добавьте сюда код, необходимый для работы

// создаваемого специализированного апплета

}

Листинг HTML-файла:

<html>

<head>

<title>HelloApplet</title>

</head>

<body>

<hr>

<applet

code=HelloApplet.class

name=HelloApplet

width=320

height=240 >

</applet>

<hr>

<a href="HelloApplet.java">The source.</a>

</body>

</html>

Исходный текст апплета начинается с двух строк, в которых с помощью оператора import подключаются библиотеки классов.

Далее в исходном тексте апплета определяется класс типа public с именем HelloApplet, которое должно совпадать с именем файла, содержащего исходный текст этого класса.

Создавая файл HelloApplet.java, система Java Applet Wizard определила на в классе HelloApplet конструктор и несколько методов, заменив некоторые методы суперкласса Applet.

Конструктор HelloApplet() класса HelloApplet вызывается при создании объекта. По умолчанию тело конструктора, создаваемого системой Java Applet Wizard, не содержит никакого кода. Однако можно добавить в него строки, выполняющие инициализацию апплета при его создании как апплета.

Базовый класс Applet содержит определение метода getAppletInfo(), возвращающего null. В классе HelloApplet, который является подклассом по отношению к классу Applet, метод getAppletInfo() переопределяется так, что теперь он возвращает текстовую информацию об апплете в виде строки класса String.

Метод init() также определен в класса Applet, от которого наследуются все апплеты (определенный в суперклассе, этот метод ничего не делает). Метод init() вызывается тогда, когда WWW-навигатор загружает в свое окно документ HTML с тегом <APPLET>, ссылающимся на данный апплет. В этот момент апплет может выполнить инициализацию, например создать задачи, если он работает в мультизадачном режиме.

В переопределенном системой Java Applet Wizard методе init() по умолчанию вызывается метод resize(), определенный в суперклассе. При помощи этого оператора изменяются размеры окна апплета, установленные в параметрах тега <APPLET>. При желании редактировать размеры окна апплета через тег <APPLET> документа HTML можно удалить вызов метода resize() из метода init().

Перед удалением апплета из памяти вызывается метод destroy() (метод, обратный методу init()), определенный в классе Applet как пустая заглушка. Система Java Applet Wizard добавляет в исходный текст класса HelloApplet переопределение метода destroy(), в котором можно выполнить все необходимые операции, выполняющиеся перед удалением апплета. Например, если в методе init() создавались какие-либо задачи, то в методе destroy() их можно завершить.

Метод start() вызывается после метода init() в тот момент, когда пользователь начинает просматривать документ HTML со встроенным в него апплетом. Система Java Applet Wizard создает заглушку, переопределяющую метод start() из суперкласса. Этот метод можно модифицировать, если при каждом посещении пользователем страницы с апплетом необходимо выполнять какую-либо инициализацию.

Обратным методу start() является метод stop(). Он вызывается, когда пользователь покидает страницу с апплетом и загружает в окно навигатора другую страницу. Этот метод вызывается перед вызовом метода destroy(). Метод stop(), переопределенный в классе HelloApplet можно дополнить кодом, который должен работать при остановке апплета.

Метод paint() выполняет рисование в окне апплета. Определение этого метода находится в классе java.awt.Component. Так как класс Applet является подклассом класса Component (см. иерархию классов апплетов), а класса HelloApplet - подклассом Applet, то метод paint() можно переопределить в классе HelloApplet.

Метод paint() вызывается, когда необходимо перерисовать окно апплета. Перерисовка окна апплета обычно выполняется асинхронно по отношению в работе апплета (подобно перерисовки клиентской части окон Windows-приложений при поступлении сообщения WM_PAINT). В любое время апплет должен быть готов перерисовать содержимое своего окна.

Методу paint() в качестве параметра передается ссылка на объект класса Graphics. По своему смыслу этот объект напоминает контекст отображения, который используется для вывода информации в Windows-окно. Контекст отображения - это как лист бумаги, на котором можно рисовать изображение или выводит текст. Многочисленные методы класса Graphics позволяют задавать различные параметры вывода, такие, например, как цвет или шрифт.

Для вывода изображения апплеты используют координатную систему, которая соответствует режиму MM_TEXT - одному из режимов, использующихся при программирование для Windows. Начало этой системы координат расположено в левом верхнем углу окна аплета, ось X направлена слева направо, а ось Y - сверху вниз.

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