powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / java beans getEventSetDescriptors
7 сообщений из 7, страница 1 из 1
java beans getEventSetDescriptors
    #38250445
Dzib
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет всем разбераюсь с Java Beans. Написал то что понял. Зашел в тупик. Хочу переопределить методы класа 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 / 0
java beans getEventSetDescriptors
    #38250455
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DzibПривет всем разбераюсь с Java Beans.
90% этой спецификации никем не поддерживается и нигде не используется. Не тратьте время зря.
Свойства, ProperyChangeListener, Introspector - это всё что нужно знать.
...
Рейтинг: 0 / 0
java beans getEventSetDescriptors
    #38250469
Dzib
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я должен презентацию провести по этому и вникаю в суть.
Если нет класа BeanInfo то Introspector достает через рефлекцию, наверно этот путь дольше будет, чем прямо к BeanInfo.
Если кто поможет, буду благодарен.
...
Рейтинг: 0 / 0
java beans getEventSetDescriptors
    #38250490
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dzib,

Если по теме. Поставьте breakpoint в конструкторы EventSetDescriptor. И пните Introspector. Увидите все параметры конструктора. Повторите их в своём getEventSetDescriptors. Только смысл? В Java ссылку на Method всё равно можно получить только рефлексией.
...
Рейтинг: 0 / 0
java beans getEventSetDescriptors
    #38250493
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DzibЯ должен презентацию провести по этому и вникаю в суть.
Уверен что где-то у вас в процессе вышел испорченый телефон. Презентация JavaBeans в доступной форме это всё что я перечисли выше. Плюс обзор смежных технологий, где Java Beans используется.
Речь точно не про Enterprise Java Beans?

DzibЕсли нет класа BeanInfo то Introspector достает через рефлекцию, наверно этот путь дольше будет, чем прямо к BeanInfo.

Наверное у вас в системе максимум 100-1000 бинов. Посроить один раз для них BeanInfo на этапе инициализации это ерунда. Нигде никто не вычисляет их постоянно. Если нужно - можно закешировать.
...
Рейтинг: 0 / 0
java beans getEventSetDescriptors
    #38250510
Dzib
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нет точно не
Код: java
1.
Enterprise Java Beans


Мне нужно ещё написать маленькое приложения которое показало б возможности Java Beans.
Я не опытный в презентациях, думаете показать работу Introspector и ProperyChangeListener хватит?
...
Рейтинг: 0 / 0
java beans getEventSetDescriptors
    #38250536
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DzibМне нужно ещё написать маленькое приложения которое показало б возможности Java Beans.
Я не опытный в презентациях, думаете показать работу Introspector и ProperyChangeListener хватит?
Для того чтобы знать "что" показывать. Нужно понимать "зачем" показывать. "Зачем" показывать, из ваших слов сводится к "так надо".

1. Почему все используют Java Beans? Потому что там есть свойства. Нужно объснить и показать преимущества свойств над полями. Это не такой простой вопрос как может показаться.
2. Зачем нужен Introspector ? Чтобы вместо работы с полями и методами, можно было бы работать со свойствами.
3. ProperyChangeListener мы определились со свойстами. Теперь их иногда будет слушать. Местами используется. Местами нет.

Фреймверк, который максимально эксплуатировал бины это Swing. Он уже много лет не развивается.
В более современной технологии - JavaFX, свойства для биндинга реализованы немного иначе.
ProperyChangeListener это то немного что ещё где-то используется.

Такие минимальные навороты как indexed property и vetoable property change - умеют лишь несколько фреймверков.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / java beans getEventSetDescriptors
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]