Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Otvety_k_gosam (1).doc
Скачиваний:
8
Добавлен:
01.04.2025
Размер:
4.61 Mб
Скачать
  1. Событийные модели в Java.

В Java 1.0 использовалась другая событийная модель: любое событие проходило всю иерархию объектов. Начиная с Java 1.1 изменяется подход к обработке событий: используется модель делегирования событий. Существенное отличие при этом: событие, как системное сообщение, посылается только тем блокам прослушивания, которые настроены на прием таких сообщений.

Событие – это объект, который описывает изменение состояния.

Источник события – это объект, который генерирует событие.

генерация события происходит когда каким то образом изменяется внутреннее состояние объекта источника. Для того чтобы блоки прослушивания могли принимать информацию об определенном типе событий, такие блоки прослушивания д/б зарегистрированы блоком источника.

Блок прослушивания событий – это объект, который получает уведомление когда происходит событие.

2 отличительные особенности блока прослушивания:

1.Блок прослушивания д/б зарегистрирован одним или несколькими источниками;

2. В блоке прослушивания (в объекте) д/б реализованы методы для приема и обработки уведомлений о событиях.

Наборы интерфейсов в которых описываются методы для обработки событий размещены в пакете java.awt.event. Например MouseMotionListener – содержит 2 метода о событиях перетаскивания и передвижения мыши.

Классы событий.

В основе механизма обработки событий находятся классы, которые представляют события. В корне иерархии классов событий Java находится класс EventObject, который размещен в пакете java.util. EventObject – суперкласс всех событий.

AWTEvent – суперкласс всех AWT-событий, которые обрабатываются моделью делегирования событий.

Примеры классов:

ActionEvent – генерируется, когда нажата кнопка, дважды щелкнут элемент списка или выбран пункт меню.

ItemEvent – помечен флажок, выбран/отменен элемент меню с меткой, выбор элемента в списке выбора.

KeyEvent – когда получен ввод с клавиатуры.

MouseEvent – драг, клик, указатель над/под объектом.

WindowEvent – окно закрыто, активизировано, дезактивизировано.

Интерфейсы прослушивания событий.

Модель делегирования событий содержит 2 части: источники событий и блоки прослушивания. Блоки прослушивания создаются путем реализации одного или нескольких интерфейсов прослушивания, определяемых пакетом java.awt.event. Когда событие происходит, источник события вызывает соответствующий метод, определенный блоком прослушивания, и передает ему объект события в качестве параметра.

ActionListener – определяет метод для приема action события.

MouseEvent – определяет 5 методов, распознающих события щелчка, входа/выхода в границы компонента, нажатия/отпускания клавиши мыши.

WindowListener – определяет 7 методов, распознающих события активизации, деактивизации, открытия, закрытия, сворачивания/разворачивания и выхода из окна.

  1. Программирование Java-апплетов

Архитектура и скелетная форма Java-апплета.

Апплет – программа работающая с окном. Апплеты управляются событиями. Апплет ожидает возникновения некоторого события. AWT уведомляет апплет о событии вызовом обработчика события, который был обеспечен апплетом. Как только это случается апплет должен выполнить соответствующее действие и затем быстро возвратить управление AWT. Пользователь взаимодействует с апплетом когда и как хочет. Эти взаимодействия посылаются апплету как события, на которые апплет должен ответить.

Все апплеты переопределяют набор методов обеспечивающих основной механизм, с помощью которого браузер или программа просмотра взаимодействуют с апплетоми управляет его выполнением. Четыре таких метода – init(), start(), stop(), destroy() – определены в Applet. Пятый paint() определен AWT-классом Component. Скелет апплета:

import java.awt.*;

import.java.applet.*;

/*

<applet code=”AppletSkel” width=300 heigth=300>

</applet>

*/

public class AppletSkel extends Applet {

//вызывается первым

public void init() {

//инициализация

}

/*Вызывается вторым после init()

Вызывается также после перезапуска апплета*/

public void start() {

//начало или продолжение выполнения

}

//Вызывается когда апплет остановлен

public void stop() {

//приостанавливает выполнение

}

/*Вызывается когда апплет завершается.

Это последний выполняемый метод*/

public void destroy() {

//выполняет завершающие действия

}

//Вызывается когда окно апплета д/б перерисовано

public void paint(Graphics g) {

//повторный показ содержимого окна

}

}

Этапы программирования и подключения Java-апплетов.

import java.awt.*;

import.java.applet.*;

/*

<applet code=” SimpleApplet ” width=300 heigth=300>

</applet>

*/

public class SimpleApplet extends Applet {

public void paint(Graphics g) {

g.drawString (“SimpleApplet”,20,20);

}

}

Апплет начинается с двух операторов import. Первый импортирует AWT классы, т.о. апплеты взаимодействуют с пользователем не через классы консольного ввода/вывода, а через AWT. AWT осуществляет поддержку графического оконного интерфейса. Второй оператор import импортирует пакет java.applet, который содержит класс Applet. Объявляется класс SimpleApplet, он д/б объявлен как public, потому что к немй необходимо обеспечить доступ из кодов которые находятся вне программы. Внутри класса объявляется метод paint(). Этот метод определен в AWT и д/б переопределен апплетом. Метод paint() вызывается каждый раз когда апплет должен восстанавливать изображение своего вывода.

Для выполнения апплета в браузере надо написать текстовый файл в формате языка html, который содержит спец тег:

<applet code=” SimpleApplet ” width=300 heigth=300>

</applet>

Процедура быстрой разработки апплета включает 3 шага:

  1. Редактирование исходного файла Java;

  2. Компиляция программы;

3. Запуск программы просмотра апплетов со спецификацией имени исходного файла в ее аргументе. Встретив в комментарии тег <applet>, утилита просмотра выполнит его.

Передача параметров в Java-апплеты.

Тег <applet> позволяет передавать параметры включающему апплету. Для получения этих параметров следует использовать метод getParameter(). Он возвращает значение указанного параметра в форме String объекта. Т.о. для числовых и булевых значений нужно будет преобразовывать их строчные представления во внутренние форматы.

import java.awt.*;

import java.applet.*;

/*

<applet code=”ParamDemo” width=300 heigth=80>

<param name=fontSize value=14>

</applet>

*/

public class ParamDemo extends Applet {

int fontSize;

//инициализация строки для показа

public void start(){

String param;

param=getParameter(“fontSize”);

try {

if (param !=null) //если не найден

fontSize=Integer.parseInt(param);

else

fontSize=0;

} catch (NumberFormatExeption e) {

fontSize=-1;

}

// Показ параметров на экране

public void paint(Graphics g) {

g.drawString (Font size: “ + fontSize, 0, 26);

}

}

Если параметр недоступен, getParameter() возращает null-указатель. Кроме того в операторе try который отлавливает исключение NumberFormatExeption д/б выполнены преобразования к числовым типам

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