Форум программистов, компьютерный форум, киберфорум
Java
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
5 / 5 / 3
Регистрация: 21.08.2012
Сообщений: 205

JavaBeans event listeners

03.05.2013, 01:59. Показов 1003. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет всем, разбираюсь с JavaBeans, говорят есть лисенеры которые могут сообщать о том что поле класса изменилось например или другие, не мог бы кто в курсе что это написать маленький примерчик как оно работает?
Буду очень благодарен.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
03.05.2013, 01:59
Ответы с готовыми решениями:

JavaBeans - Интроспекция?
Добрый день. Хочется реализовать что-то похожее на типичный интерфейс программных редакторов. Кликая на том или ином компоненте,...

Получение данных с JavaBeans
Приветсвую всех!!! У мня такая проблемка.... создан класс JavaBeans, и пытаюсь получить из него данные... Вс работает нормально,...

Порекомендуйте литературу по JavaBeans
porekomenduite literaturu pro JavaBeans. zhelayel'no link na .zip ili podobnii file. bolshoe spasibo vsem otkliknuvshinsya...

1
5 / 5 / 3
Регистрация: 21.08.2012
Сообщений: 205
07.05.2013, 14:53  [ТС]
Лучший ответ Сообщение было отмечено Dzib как решение

Решение

Нашел это
Тут описаны интерфейсы и класы. Листинг 12-15.
Но я не настолько быстро соображаю что б сразу понять как их использовать.
Прошу опять, не мог бы кто в курсе написать маленький примерчик как оно работает?

Добавлено через 13 часов 6 минут
Написал то что понял. Зашел в тупик. Хочу переопределить методы класа SimpleBeanInfo, знаю что не обезательно, но хочется понять как оно работает. Застрял на методе getEventSetDescriptors. Помогите разобратся.
Пишет так:
-- Источник обязан:
- выбрать имя метода, вызываемого в компонентах-подписчиках при распространении события. Этот метод должен содержаться в интерфейсе, который является расширением интерфейса EventListener (данное расширение мы будем называть интерфейсом события);
- реализовать метод регистрации подписчиков события и метод аннулирования регистрации;
- при распространении события вызвать метод, описанный в интерфейсе события, во всех компонентах-подписчиках.
-- В свою очередь, подписчик должен предпринять следующие действия:
- выполнить реализацию интерфейса события, то есть по сути реализовать метод обработки события (напомним, что имя этого метода выбрал источник);
- зарегистрироваться в качестве подписчика события.
Метод обработки события должен иметь один аргумент, которым является так называемый событийный объект - преемник класса java.util. EventObject. Посредством этого объекта подписчику передается информация об источнике и другие характеристики события.

Регистрационные методы должны поддерживать рефлексию и определяться по следующим шаблонам:
public void add<имя интерфейса события>
(<имя интерфейса события> подписчик);
public void remove<имя интерфейса события>
(<имя интерфейса события> подписчик);

Определение метода fire - внутреннее дело источника события.
Например я хочу создать события которое будет следить какое значения поля name у моего бина и выводить на консоль подтверждения, если оно равно "Petro", что нужно добавить? Как будет тогда метод getEventSetDescriptors выгледить? Спасибо всем кто хоть прочитает это)

Java
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
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.beans.PropertyChangeSupport;
 
public class MyBean implements PropertyChangeListener {
    private PropertyChangeSupport pcs = new PropertyChangeSupport(this);
    private String name = "default";
    private long time = System.currentTimeMillis();
 
    public MyBean() {
        pcs.addPropertyChangeListener(this);
    }
 
    public String getName() {
        return name;
    }
 
    public void setName(String name) {
        String oldValue = this.name;
        this.name = name;
        pcs.firePropertyChange("name", oldValue, name);
    }
 
    public long getTime() {
        return time;
    }
 
    public void setTime(long time) {
        Long oldValue = this.getTime();
        this.time = time;
        pcs.firePropertyChange("time", oldValue, time);
    }
 
    @Override
    public void propertyChange(PropertyChangeEvent evt) {
        System.out.println("Property Name = " + evt.getPropertyName());
        System.out.println("Old Value = " + evt.getOldValue());
        System.out.println("New Value = " + evt.getNewValue());
 
    }
}
Java
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
import java.awt.Image;
import java.beans.BeanDescriptor;
import java.beans.BeanInfo;
import java.beans.EventSetDescriptor;
import java.beans.IntrospectionException;
import java.beans.MethodDescriptor;
import java.beans.PropertyDescriptor;
import java.beans.SimpleBeanInfo;
 
public class MyBeanBeanInfo extends SimpleBeanInfo {
    private final static Class<MyBean> beanClass = MyBean.class;
 
    public MyBeanBeanInfo() {
    }
 
    @Override
    public BeanDescriptor getBeanDescriptor() {
        BeanDescriptor desc = new BeanDescriptor(beanClass);
        return desc;
    }
 
    @Override
    public PropertyDescriptor[] getPropertyDescriptors() {
        try {
            PropertyDescriptor name = new PropertyDescriptor("name", beanClass);
            PropertyDescriptor time = new PropertyDescriptor("time", beanClass);
 
            name.setBound(true);
            time.setBound(true);
 
            PropertyDescriptor rv[] = { name, time };
            return rv;
        } catch (IntrospectionException e) {
            throw new Error(e.toString());
        }
    }
 
    @Override
    public EventSetDescriptor[] getEventSetDescriptors() {
        // TODO Auto-generated method stub
        return null;
    }
 
    @Override
    public int getDefaultEventIndex() {
        // TODO Auto-generated method stub
        return 0;
    }
 
    @Override
    public int getDefaultPropertyIndex() {
        // TODO Auto-generated method stub
        return 0;
    }
 
    @Override
    public MethodDescriptor[] getMethodDescriptors() {
        // TODO Auto-generated method stub
        return null;
    }
 
    @Override
    public BeanInfo[] getAdditionalBeanInfo() {
        // TODO Auto-generated method stub
        return null;
    }
 
 
}
Java
1
2
3
4
5
6
import java.util.EventListener;
 
 
public interface MyBeanListener extends EventListener {
 
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
07.05.2013, 14:53
Помогаю со студенческими работами здесь

На сколько взаимозаменяемы JavaBeans и Custom Tags?
Так случилось, что в первой мой книжке по джаве технология Custom Tags была хороша разобрана, а про JavaBeans меньше было написано(В...

Модифицировать персональный сайт под технологию Java Server Pages и JavaBeans
НУЖНА ПОМОЩЬ!!!! НЕОБХОДИМО Модифицировать персональный сайт под технологию Java Server Pages и JavaBeans . Обязательные использование...

Как в IntelliJ IDEA загрузить компонент JavaBeans из JAR файла
Как вставить в палитру компонент из jar файла? import javax.imageio.ImageIO; import javax.swing.*; import java.awt.*; import...

JSP+javabeans - русские буквы
Здравствуйте ! Подключаюсь к обсуждению вечной проблемы ??? в страницах JSP. Раньше хранил переменные в Session и с русскими проблем не...

Как подключить JavaBeans к JSP - странице
У меня проблема с подключением JavaBean к JSP странице. Дело в том, что при запуске JSP странице не находится класс JavaBean'а. ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Киев стоит - украинская песня
zorxor 28.01.2026
wfWdiRqdTxc О Господи, Вечный, Ты . . . Я помоги, Бесконечный. . . Я прошу Ты. . . Я погибаю, спаси. . . Я прошу Тебя Вечный. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru