Скачать презентацию
Идет загрузка презентации. Пожалуйста, подождите
Презентация была опубликована 10 лет назад пользователемЗинаида Лямина
1 Java Advanced JavaBeans
2 2 СПбГУ ИТМО Georgiy KorneevJava Advanced / JavaBeans Содержание 1.Введение 2.Реализация 3.Применение 4.Хранение 5.Самоописание 6.Заключение
3 Введение Часть 1
4 4Georgiy KorneevJava Advanced / JavaBeans JavaBeans Компонентная модель языка Java Основные понятия Bean Свойство (property) Событие (event) Сохраняемость (persistance) Примеры Компонента GUI Модель GUI
5 5Georgiy KorneevJava Advanced / JavaBeans Свойство xxx Getter getXxx или isXxx Setter setXxx
6 6Georgiy KorneevJava Advanced / JavaBeans Типы свойств Простое (simple) Индексируемое (indexed) Связанное (bound) Ограниченное (constrained)
7 7Georgiy KorneevJava Advanced / JavaBeans События Генерируются при изменении свойства PropertyChangeEvent – событие getPropertyName() – имя свойства getOldValue() – старое значение getNewValue() – новое значение PropertyChangeListener – слушатель propertyChange(PropertyChangeEvent) – получатель события
8 Реализация Часть 2
9 9Georgiy KorneevJava Advanced / JavaBeans JavaBean-Класс Имеет конструктор по умолчанию Содержит одно или несколько свойств
10 10Georgiy KorneevJava Advanced / JavaBeans Пример. Простое свойство Свойство title Поле private String title; Getter public String getTitle() { return title; } Setter public void setTitle(String title) { this.title = title; }
11 11Georgiy KorneevJava Advanced / JavaBeans Реализация связанных свойств (1) Класс PropertyChangeSupport PropertyChangeSupport(Object source) – конструктор firePropertyChange(name, oldValue, newValue) – генерация события Если newValue.equals(oldValue) – событие не порождается
12 12Georgiy KorneevJava Advanced / JavaBeans Реализация связанных свойств (2) Класс PropertyChangeSupport addPropertyChangeListener(listener) – добавление слушателя на все свойства addPropertyChangeListener(name, listener) – добавление слушателя на указанное свойство removePropertyChangeListener(name?, listener) – удаление слушателя
13 13Georgiy KorneevJava Advanced / JavaBeans Пример. Связанное свойство Property change support private final PropertyChangeSupport pcs = new PropertyChangeSupport(this); Setter public void setTitle(String title) { String oldValue = this.title; this.title = title; pcs.firePropertyChange("title", oldValue, this.title); }
14 14Georgiy KorneevJava Advanced / JavaBeans Ограниченные свойства Процесс установки значения Сохранение старого значения свойства Извещение о предстоящем изменении Установка нового значения Извещение об установке нового значения
15 15Georgiy KorneevJava Advanced / JavaBeans Отклонение изменения свойства VetoableChangeListener – слушатель vetoableChange(PropertyChangeEvent event) – событие PropertyVetoException – бросается при отклонении изменения Класс VetoableChangeSupport fireVetoableChange – сообщение о предстоящем изменении addVetoableChangeListener – добавление removeVetoableChangeListener – удаление
16 16Georgiy KorneevJava Advanced / JavaBeans Пример. Ограниченное свойство Vetoable change support private final VetoableChangeSupport vcs = new VetoableChangeSupport(this); Setter public void setTitle(String title) throws PropertyVetoException { String oldValue = this.title; vcs.fireVetoableChange("title", oldValue, title); this.title = title; pcs.firePropertyChange("title", oldValue, title); }
17 17Georgiy KorneevJava Advanced / JavaBeans Индексированные свойства Getter Value[] getXxx getXxx(index) Setter setXxx(index, value) setXxx(Value[]) IndexedPropertyChangeEvent getIndex() – индекс измененного элемента PropertyChangeSupport fireIndexedPropertyChange(name, index, oldValue, newValue) – генерация события
18 18Georgiy KorneevJava Advanced / JavaBeans События Методы манипуляции со слушателями add ( listener) remove ( listener) При изменении списка слушателей события не генерируются
19 Применение JavaBean Часть 3
20 20Georgiy KorneevJava Advanced / JavaBeans Пассивная GUI-компонента (1) Отображает информацию из модели, не позволяя ее редактировать При обновлении модели должна перерисовываться Примеры Индикатор прогресса Список событий
21 21Georgiy KorneevJava Advanced / JavaBeans Пассивная GUI-компонента (1)
22 22Georgiy KorneevJava Advanced / JavaBeans Активная GUI-компонента (1) Отображает информацию из модели, и позволяет ее редактировать При обновлении модели должна перерисовываться При изменении информации обновляет модель Примеры Полоса прокрутки Выбор из списка Текстовое поле
23 23Georgiy KorneevJava Advanced / JavaBeans Активная GUI-компонента (2)
24 24Georgiy KorneevJava Advanced / JavaBeans Обрыв цепочки сообщений
25 25Georgiy KorneevJava Advanced / JavaBeans Приемы обработки Хранение данных только в модели Все данные хранятся в модели При изменении данных модель отслеживает зависимости Независимые редакторы свойств Каскадирование изменений При изменении модели изменяется и другая модель Явное обновление пассивной компоненты Слушатель модели обновляет компоненту
26 Хранение JavaBeans Часть 4
27 27Georgiy KorneevJava Advanced / JavaBeans Краткосрочное хранение Сериализация Serializable Externalizable По умолчанию, списки слушателей не сериализуются
28 28Georgiy KorneevJava Advanced / JavaBeans Долговременное хранение XMLEncoder – сохранение состояния XMLDecoder – загрузка состояния Процесс сохранения Создание объекта конструктором по умолчанию Сравнение всех свойств При неравенстве – запись свойства При равенстве – ничего
29 29Georgiy KorneevJava Advanced / JavaBeans Пример. XMLEncoder JButton button; XMLEncoder encoder = new XMLEncoder( new BufferedOutputStream( new FileOutputStream("button.xml"))); encoder.writeObject(button); encoder.close();
30 30Georgiy KorneevJava Advanced / JavaBeans Пример. XMLDecoder JButton button; XMLDecoder decoder = new XMLDecoder( new BufferedInputStream( new FileInputStream("button.xml"))); button = (JButton) decoder.readObject(); decoder.close();
31 31Georgiy KorneevJava Advanced / JavaBeans Формат XML-файла – основной контейнер – объект – вызов метода – установка свойства,, … – значения – массив
32 Самоописание Часть 5
33 33Georgiy KorneevJava Advanced / JavaBeans Самоописание (introspection) Способ описания свойств JavaBean Преимущества Переносимость Повторное использование Совместимость
34 34Georgiy KorneevJava Advanced / JavaBeans Описание JavaBean Интерфейс BeanInfo Методы BeanDescriptor getBeanDescriptor() – дескриптор PropertyDescriptor[] getPropertyDescriptors() – описания свойств EventSetDescriptor[] getEventSetDescriptors() – дескрипторы групп сообщений MethodDescriptor[] getMethodDescriptors() – дескрипторы методов Класс SimpleBeanInfo
35 35Georgiy KorneevJava Advanced / JavaBeans Дескриптор возможности Класс FeatureDescriptor Методы getName() – имя возможности getDisplayName() – отображаемое имя getShortDescription() – описание возможности isPreffered(), isExpert(), isHidden() – уровень видимости
36 36Georgiy KorneevJava Advanced / JavaBeans Дескриптор свойства Класс PropertyDescriptor Методы getPropertyType() – тип свойства getReadMethod() – getter getWriteMethod() – setter isBound(), isConstrained() – тип свойства getPropertyEditorClass() – тип редактора свойства Класс IndexedPropertyDescriptor getIndexedRead(Write)Method()
37 37Georgiy KorneevJava Advanced / JavaBeans Дескриптор группы событий Класс EventSetDescriptor Методы getListenerType() – тип слушателя getAddListenerMethod() – метод добавления слушателя getRemoveListenerMethod() – метод удаления слушателя
38 38Georgiy KorneevJava Advanced / JavaBeans Дескриптор метода Класс MethodDescriptor Методы getMethod() – метод getParameterDescriptors() – дескрипторы аргументов метода Класс ParameterDescriptor
39 39Georgiy KorneevJava Advanced / JavaBeans Получение информации о JavaBean Класс Introspector Загрузка информации для Поиск XxxBeanInfo Анализ методов Методы getBeanInfo(beanClass) – получение описания getBeanInfo(beanClass, stopClass) – получение частичного описания
40 40Georgiy KorneevJava Advanced / JavaBeans GUI-редакторы Позволяют редактировать свойства JavaBean Позволяют добавлять связи по событиям Позволяют добавлять обработчики событий
41 Заключение Часть 6
42 42Georgiy KorneevJava Advanced / JavaBeans JavaBean Класс с конструктором по умолчанию Содержит свойства Позволяет добавлять слушателей Serializable
43 43Georgiy KorneevJava Advanced / JavaBeans Ссылки JavaBeans Specification // pec.html pec.html JavaBeans Trail in Java Tutorial // ns/ ns/ Long-term JavaBean persistance // sistence2/ sistence2/
44 44 СПбГУ ИТМО Georgiy KorneevJava Advanced / JavaBeans Вопросы
Еще похожие презентации в нашем архиве:
© 2024 MyShared Inc.
All rights reserved.