АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Создание и использование связанного свойства

Читайте также:
  1. F. Метод, основанный на использовании свойства монотонности показательной функции .
  2. HMI/SCADA – создание графического интерфейса в SCADА-системе Trace Mode 6 (часть 1).
  3. II. Свойства векторного произведения
  4. II. Структура и использование земель сельскохозяйственного назначения
  5. II.2.3. Получение информации в работе психолога и ее использование
  6. III. Психические свойства личности – типичные для данного человека особенности его психики, особенности реализации его психических процессов.
  7. III. Разведение спирта с использованием таблиц ГФ XI.
  8. III. Создание и обработка комплексного информационного объекта в виде презентации с использованием шаблонов.
  9. MathCad: понятие массива, создание векторов и матриц.
  10. V2: Электрические и магнитные свойства вещества
  11. V3: Создание советской политической системы. Конституция РСФСР 1918 г.
  12. А) ИСПОЛЬЗОВАНИЕ КАТЕГОРИИ ВИДА В РУССКОМ ЯЗЫКЕ

Разберемся практически, как создавать и использовать связанные свойства. Начнем с события, которое должно быть сгенерированно при изменении связанного свойства. Это событие класса java.beans.PropertyChangeEvent (см. документацию).

Далее можно действовать по следующей инструкции.

1. Для регистрации/дерегистрации слушателя необходимо в бине реализовать два метода:

addPropertyChangeListener(PropertyChangeListener p) и removePropertyChangeListener(PropertyChangeListener p);

2. Чтобы не реализовывать их вручную, лучше воспользоваться существующим классом java.beans.PropertyChangeSupport (см. документацию);

3. В set -методе связанного свойства необходимо добавить вызов метода firePropertyChange() класса java.beans.PropertyChangeSupport;

4. В классе-слушателе реализовать интерфейс PropertyChangeListener, т.е. в заголовке класса записать “ implements PropertChangeListener ”, а в теле класса реализовать метод public void propertyChange(PropertyChangeEvent evt);

5. Создать объект-слушатель и зарегистрировать его как слушателя нашего бина при помощи метода addPropertyChangeListener(), который был реализован в п.1. Лучше всего это сделать сразу после порождения объекта-слушателя, например:

MyListener obj = new MyListener();

myBean.addPropertyChangeListener(obj);

где myBean – создаваемый бин (имеется в виду объект, а не класс).

Пункт 4-й должен быть реализован для каждого класса-слушателя, а п.5 – для каждого порожденного объекта-слушателя.

Следует разобрать подробнее пункты 2 и 3.

Сейчас необходимо реализовать генерацию событий. Бин должен генерировать событие PropertyChangeEvent при изменении связанного свойства (п.3). Кроме того, согласно правилам событийной модели Java он должен обеспечивать регистрацию/дерегистрацию слушателей при помощи соответствующих методов add…Listener/remove…Listener (п.2).

Т.е. нужно обеспечить наличие в бине некоторого списка слушателей, а также методы addPropertyChangeListener() и removePropertyChangeListener().

К счастью, не требуется программировать все это. Соответствующий инструментарий уже подготовлен в пакете java.beans – это класс java.beans.PropertyChangeSupport. Он обеспечивает регистрацию слушателей и методы firePropertyChange(), которые можно использовать в тех местах, где требуется сгенерировать событие, т.е. в set -методах, которые изменяют значение связанных атрибутов.

Предложенный механизм будет рассмотрен в следующем примере.

Пусть имеется некоторый бин SomeBean с одним свойством someProperty:

/* пример # 24: простой bean-класс: SomeBean.java */

package chapt13;

public class SomeBean{

private String someProperty = null;

public SomeBean(){

}

public String getSomeProperty(){

return someProperty;

}

public void setSomeProperty(String value){

someProperty = value;

}

}

Переделаем его так, чтобы свойство someProperty стало связанным:

/* пример # 25: bean-класс со связанным свойством: SomeBean.java */

import java.beans.*;

public class SomeBean{

private String someProperty = null;

private PropertyChangeSupport pcs;

public SomeBean(){

pcs = new PropertyChangeSupport(this);

}

public void addPropertyChangeListener

(PropertyChangeListener pcl){

pcs.addPropertyChangeListener(pcl);

}

public void removePropertyChangeListener

(PropertyChangeListener pcl){ pcs.removePropertyChangeListener(pcl);

}

public String getSomeProperty(){

return someProperty;

}

public void setSomeProperty(String value){

pcs.firePropertyChange(“someProperty”, someProperty, value);

someProperty = value;

}

}

Здесь реализованы пункты 1, 2 и 3 приведенной инструкции. Остальные пункты относятся к использованию связанного свойства, и для их демонстрации потребуется более реальный пример.

Для обеспечения механизма генерации событий в классе SomeBean создан объект класса PropertyChangeSupport (поле pcs). И все действия по регис­трации/дерегистрации слушателей по собственно генерации событий “переадре­суются” этому объекту, который за нас выполняет всю эту рутинную работу.

Так, например, метод

addPropertyChangeListener(PropertyChangeListener pcl) созданного класса просто обращается к одноименному методу класса PropertyChangeSupport. В методе setSomeProperty() перед собственно изменением значения свойства someProperty генерируется событие PropertyChangeEvent. Для этого вызывается метод firePropertyChange(), который обеспечивает все необходимые для такой генерации действия.

Как видно из кода примера, результат не очень громоздкий, несмотря на то, что наш бин реализует достаточно сложное поведение.


1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 |

Поиск по сайту:



Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.005 сек.)