Я пытаюсь разобраться с различными аспектами обработки событий в Java FX. Я прочитал материал Oracle, но я все еще немного смущен и задаюсь вопросом, может ли кто-нибудь объяснить различия и ключевые варианты использования некоторых из различных вариантов, доступных кратким образом.Java FX - различные аспекты обработки событий
Во-первых, из того, что я вижу, есть обработчики событий и фильтры событий, а затем есть удобные методы. Итак, какова разница между обработчиками и фильтрами и почему я буду использовать один над другим. Кроме того, каковы преимущества добавления обработчика событий с помощью addEventHandler (...) вместо использования метода удобства? Из моего собственного тестирования я считаю, что с помощью addEventHandler (...) вы можете присоединить несколько обработчиков событий к определенному элементу управления, тогда как использование setOnEvent-type (...) позволяет только подключить один обработчик события, поскольку он каждый раз перезаписывает свойство установлено. Любые другие различия?
Здесь есть темы ChangeListener и InvalidationListener. Правильно ли я считаю, что ChangeListener - это тип обработчика событий, специально разработанный для прослушивания событий изменений (свойств)? Кажется, я не могу найти много примеров использования ChangeListener помимо страницы Oracle в свойствах JavaFX и Binding - знает ли кто-нибудь о хорошем руководстве? Кроме того, простыми словами, когда я буду выбирать между ChangeListener и InvalidationListener?
Наконец, можно ли иногда моделировать одну и ту же процедуру обработки событий через традиционный EventHandler или ChangeListener - например, нажатие кнопки может быть обработано с помощью ActionEvent - есть ли способ сделать это через ChangeListener? Я вижу, что теоретически можно добавить слушателя изменений в onActionProperty, но я думаю, что это не будет вызываться при нажатии кнопки, но вместо этого, если setOnAction фактически изменил обработчик событий, который был присоединен?
Можете ли вы пояснить - во-первых, правильно ли я говорю, что с помощью setOnAction вы можете присоединить только один обработчик событий к кнопке, тогда как с помощью методов addEventHandler/addListener вы можете добавить много обработчиков или слушателей к узлу/свойству соответственно? Во-вторых, если я просто обсужу принцип «обработки событий» в целом и ссылаюсь на то, как JavaFX справляется с этим, было бы ли законным я сказать, что есть обработчики событий, которые обрабатывают различные события, и ChangeListeners, которые обрабатывать изменения свойств, причем последний является специализированным типом обработчика событий? – Tranquility
1. Да 2. При обращении к JavaFX вы всегда должны делать различие между слушателями и обработчиками событий и называть их такими, какие они есть, так что все, кто знаком с синтаксисом JavaFX, понимают, что вы имеете в виду. Однако, вообще говоря, ваша концепция верна. Как слушатели, так и обработчики событий являются, по сути, функциями обратного вызова. С этой точки зрения прослушиватель изменений можно рассматривать как обработчик события «change», в то время как обработчик события мыши можно рассматривать как слушателя событий «мыши». – AlmasB