Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
56_Java.pdf
Скачиваний:
210
Добавлен:
18.02.2016
Размер:
2.39 Mб
Скачать

Скачано с сайта http://ivc.clan.su

He все среды разработки допускают использование индексированных свойств.

Соглашения об именах для событий

Компоненты JavaBeans используют модель делегирования событий. События, которые компонент

может генерировать и посылать другим компонентам, идентифицируются следующими методами: public void addTypeListener(TypeListener eventListener)

public void removeTypeListener(TypeListener eventListener)

где Type — тип события.

Если, например, в результате интроспекции выясняется наличие у компонента методов addActionListener() и removeActionListener(), то компоновщик предполагает, что компонент может генерировать событие типа ActionEvent.

Первый из указанных выше методов используется для регистрации блока прослушивания событий, когда нужно подтвердить заинтересованность в обработке событий определённого типа. Второй — для удаления блока прослушивания, когда больше нет необходимости принимать уведомления о событиях определённого типа от компонента.

Соглашения об именах для методов

Все public-методы компонента JavaBeans доступны для использования средами визуального

проектирования. Protected- и privite-методы скрываются.

Использование событий для управления свойствами

События можно использовать для создания

связанных свойств (bound properties);

ограниченных свойств (constrained properties).

Связанные свойства

Bean-компонент, имеющий связанное свойство, генерирует событие изменения свойства (PropertyChangeEvent) при изменении значения свойства. Событие может быть передано другому компоненту и обработано.

Связанное свойство (свойства) идентифицируется в процессе интроспекции методами addPropertyChangeListener() и removePropertyChangeListener(). Визуальная среда, обнаружив эти методы, делает вывод о наличии у Bean-компонента связанных свойств и помещает событие типа PropertyChangeEvent в список событий, предоставляемый разработчику приложения и используемый для связывания компонентов.

В пакете java.beans имеются классы и интерфейсы, которые поддерживают возможность создания связанных свойств у Bean-компонентов.

Класс PropertyChangeEvent — класс события изменения свойства.

Это класс события, производный от java.util.EventObject (от которого происходит также класс java.awt.AWTEvent). Объект события изменения свойства содержит:

ссылку на объект-источник события;

имя свойства;

его старое и новое значение.

В классе имеются методы для получения этой информации:

public String getPropertyName()

public Object getNewValue() public Object getOldValue()

37

Скачано с сайта http://ivc.clan.su

Событие генерируется, когда изменяется связанное свойство, и посылается объектам, которые зарегистрированы в качестве блоков прослушивания событий данного типа и реализуют интерфейс

PropertyChangeListener.

Интерфейс PropertyChangeListener — интерфейс блока прослушивания событий изменения свойства. Содержит объявление метода, который должен быть реализован блоком прослушивания и

вызывается при изменении связанного свойства:

public void propertyChange(PropertyChangeEvent pce).

Класс PropertyChangeSupport — класс, используемый Bean-компонентами, поддерживающими связанные свойства.

Объект PropertyChangeSupport помогает управлять списком зарегистрированных блоков прослушивания и уведомлять блоки прослушивания о событии изменения свойства.

Для этого класс имеет методы для регистрации блоков прослушивания (приёмников события изменения свойства), отмены регистрации и для запуска события изменения свойства, которое

предназначено зарегистрированным (добавленным в список) блокам прослушивания:

public void addPropertyChangeListener(PropertyChangeListener pcl) public void removePropertyChangeListener(PropertyChangeListener pcl) public void firePropertyChange(String propertyName, Object oldValue,

Object newValue)

Методы addPropertyChangeListener() и removePropertyChangeListener() класса Bean могут просто передавать запросы аналогичным методам в классе PropertyChangeSupport.

Преобразование обычного свойства в связанное

Пусть Bean-компонент имеет свойство типа int с именем X и соответствующий метод setter:

...

private int x;

public void setx(int newX)

{

x = newX;

}

Чтобы преобразовать свойство в связанное, необходимо выполнить следующее:

1.Добавить в класс Bean-компонента переменную типа PropertyChangeSupport и инициализировать ее:

private PropertyChangeSupport pcs = new PropertyChangeSupport(this);

2.Добавить в класс методы addPropertyChangeListener(PropertyChangeListener pcl) и removePropertyChangeListener(PropertyChangeListener pcl).

Эти методы определены в классе java.awt.Component, причем имеются версии для конкретного свойства:

addPropertyChangeListener (propertyName, PropertyChangeListener pcl) removePropertyChangeListener (propertyName,

PropertyChangeListener pcl)

В классе Bean-компонента данные методы могут просто вызывать одноименные методы объекта pcs:

public void addPropertyChangeListener(PropertyChangeListener pcl)

{

pcs.addPropertyChangeListener(pcl);

}

public void removePropertyChangeListener(PropertyChangeListener pcl)

{

38

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