Там кто-либо существует ранее класс, который помогает поддержать, добавляют/удаляют операции EventListener? (отчасти как PropertyChangeSupport)
Я пытаюсь разделить свой код в модель и представление в Java. У меня есть некоторые данные, которые прибывают беспорядочно и хотели бы, чтобы модель поддерживала некоторый EventListener так, чтобы представление могло подписаться на изменения в модели. Данные многочисленные +, усложнил достаточно, что я не хочу должным быть делать целую мелкомодульную поддержку изменения свойства Javabeans; скорее я был бы точно так же, как для разрешения уведомления, что модель изменилась крупным способом.
как я могу лучше всего сделать это?
Я бы обработал это с помощью ChangeEvent. Это просто указание на то, что что-то изменилось.
Что касается реализации функциональности добавления/удаления/пожара. Здесь нет механизма, подобного PropertyChangeSupport, но код достаточно прост, и в нем нет особой необходимости.
private final EventListenerList listenerList = new EventListenerList();
private final ChangeEvent stateChangeEvent = new ChangeEvent(this);
public void addChangeListener(ChangeListener l) {
listenerList.add(ChangeListener.class, l);
}
public void removeChangeListener(ChangeListener l) {
listenerList.remove(ChangeListener.class, l);
}
protected void fireChange() {
for (ChangeListener l: listenerList.getListeners(ChangeListener.class)) {
l.stateChanged(stateChangeEvent);
}
}
Примечание: JComponent предоставляет защищенный объект listenerList
для использования подклассами.
Я не уверен, что это отвечает ваш вопрос, но вы можете использовать javax.swing.event.EventListenerList
, он поддерживает операции add () и remove () для ваших слушателей. Затем вы можете перебирать конкретный подкласс слушателя для запуска событий:
for (MyListener listener : listenerList.getListeners(MyListener.class) {
listener.fireEvent(...);
}