Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Компонентная модель Java Beans



Компоненты многократного использования объединены в языке Java общим названием Beans. Идеологически технология Beans близка компонентной технологии Borland Delphi. Пожалуй, наибольшее отличие этих технологий касается механизма обработки событий. Кратко отметим основные положения компонентной технологии Java Beans.

Назначение – создание специализированных классов, которые удовлетворяют следующим условиям:

· класс решает некоторую изолированную задачу;

· класс можно встраивать в визуальные инструментальные пакеты;

· класс можно многократно использовать с автоматической генерацией части программного кода.

Для описания компонентных классов разработаны простые правила, с помощью которых определяются свойства (в том числе и видимые разработчиком приложения), методы и выполняется обработка событий. Что касается свойств, то общее правило их объявления и использования аналогично свойствам компонентной модели Delphi: свойство – это внутреннее закрытое поле, доступ к которому реализуется только через обращение к соответствующим методам доступа. При этом методы доступа обязательно именуются с помощью префиксов set и get, за которыми идет имя свойства: setName(параметр) и getName(). Как обычно, set-метод принимает один входной параметр типа внутреннего поля, а get-метод возвращает значение поля. Фрагмент описания компонентного класса:

class MyBeansClass

{ private int Field1; // закрытые поля

private String Field2;

public int getField1() { return Field1;} // методы доступа

publicvoid setField1(int aField1) { Field1 = aField1;}

public String getField2() { return Field2;} // методы доступа

publicvoid setField2(String aField2) { Field2 = aField2;};

publicvoid SomeMethod(параметры) { реализация }; // просто метод

};

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

Любое событие генерируется объектом-источником при изменении его внутреннего состояния. Все основные события классифицированы и им поставлены в соответствие некоторые классы. Родоначальником иерархии событий является класс EventObject, от которого порождены следующие основные классы событий:

· ActionEvent – обработка нажатий кнопок или выбор пунктов меню.

· ComponentEvent – общие события при манипуляциях с компонентом.

· ContainerEvent – события при добавлении/удалении компонента из контейнера.

· KeyEvent – события ввода с клавиатуры.

· MouseEvent – «мышиные» события.

· WindowEvent – оконные события.

· ItemEvent – выбор элементов в списках.

· TextEvent – любые изменения в текстовых полях.

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

· KeyListener: keyPressed, keyReleased, keyTyped

· MouseListener: mouseClicked, mouseEntered, mouseExited, mousePressed, mouseReleased

· MouseMotionListener: mouseMoved, mouseDragged

· ItemListener: itemStateChanged

· WindowListener: windowOpened, windowClosing, windowActivated

· ActionListener: actionPerformed

Для обработки события надо создать объект-слушатель и зарегистрировать его в компоненте, который генерирует данное событие. Для регистрации слушателей используются специальные методы add***Listener () и remove***Listener (), где звездочки *** заменяют тип события. Например: addActionListener, addKeyListener, addMouseListener, addItemListener и т.д. Компонент может зарегистрировать несколько слушателей-обработчиков разных событий. Например, если ранее описанный класс MyBeansClass должен обрабатывать события от мыши и клавиатуры, он должен зарегистрировать соответствующих слушателей, для чего в описание класса надо добавить следующие методы:

publicvoid addKeyListener(KeyListener kl) {... };

publicvoid removeKeyListener(KeyListener kl) {... };

publicvoid addMouseListener(MouseListener ml) {... };

publicvoid removeMouseListener(MouseListener ml) {... };

Информация о всех свойствах компонентного класса и зарегистрированных событиях сохраняется в файле и с помощью механизма отражения доступна в процессе визуального создания программы. Здесь также используется такое важное свойство Bean-компонентов, как сохраняемость (persistence), т.е. способность компонентов записывать себя во внешние файлы с восстановлением своей структуры в более позднее время. Это свойство обеспечивается механизмом сериализации, который является стандартным для всех объектов Java, реализующих интерфейс Serializable. Этот механизм превращает объект в поток байтов, помещаемый во внешний файл. Очень важно, что механизм сериализации позволяет сохранять и восстанавливать объектную структуру любой сложности, т.е. со всеми внутренними объектными свойствами.





Дата публикования: 2014-11-02; Прочитано: 589 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.007 с)...