В панели Эскиз или в панели JavaBean визуального редактора можно добавить событие или компонент.
При использовании существующего подписчика в него добавляется метод события. Для того чтобы существующий подписчик можно было использовать повторно, он должен быть в анонимном внутреннем классе объекта JavaBean, реализующем интерфейс события. Кроме того, метод добавляемого события должен быть пустым, либо подписчик должен расширять класс-адаптер, и в этом случае метод события не должен существовать. Для событий изменения свойств подписчик PropertyChangeListener будет использован повторно если он регистрируется в JavaBean с помощью общего метода addPropertyChange(PropertyChangeListener listener). Если в нем не будет блока обработки данного свойства, он будет добавлен.
Если подходящего подписчика нет, то будет создан новый. Это будет анонимный внутренний класс и, если соответствующий класс-адаптер доступен, он будет расширять класс-адаптер. В противном случае он будет реализовывать интерфейс события непосредственно. Для обработки события будет создан пустой метод с комментарием //TODO, в который вам нужно будет добавить код. Наличие комментария //TODO приводит к добавлению метода в окно Задачи. Удалите его когда код обработки будет готов.
В предыдущем примере метод windowOpened уже существует. Если подписчик расширяет класс-адаптер, то он будет использован повторно, т.к. не имеет метода windowClosed. Программой добавляется пустой метод windowClosed(WindowEvent e) такого вида:
this.addWindowListener(new java.awt.event.WindowAdapter() { public void windowClosed(java.awt.event.WindowEvent e) { System.out.println("windowClosed()"); // TODO Добавьте код здесь } public void windowOpened(java.awt.event.WindowEvent e) { callExistingWindowOpenedLogic(); } });
В экспертном режиме события также можно добавлять с помощью панели объектов Java. В меню События содержатся все методы событий подписчика, и те, которые уже используются, неактивны.
Для PropertyChangeListener в контекстном меню показываются все связанные свойства JavaBean. Те из них, которые уже используются в PropertyChangeListener, неактивны.
В подписчиках, зарегистрированных с помощью метода с одним аргументом, измененное свойство определяется в блоке if:
javaBean.addPropertyChangeListener(new java.beans.PropertyChangeListener() { public void propertyChange(java.beans.PropertyChangeEvent e) { if ((e.getPropertyName().equals("font"))) { System.out.println("propertyChange(font)"); } } });
Подписчики, не привязанные к одному свойству, используются повторно путем добавления в них новых блоков if{} для других свойств.
Подписчики, регистрированные в JavaBean с помощью метода с двумя аргументами addPropertyChangeListener(String propertyName, PropertyChangeListener listener), привязываются к одному свойству и не могут использоваться повторно. В этом случае в подменю События неактивны все элементы.