Вопрос: Есть идеи, как это можно применять? — КиберПедия 

История развития хранилищ для нефти: Первые склады нефти появились в XVII веке. Они представляли собой землянные ямы-амбара глубиной 4…5 м...

Индивидуальные очистные сооружения: К классу индивидуальных очистных сооружений относят сооружения, пропускная способность которых...

Вопрос: Есть идеи, как это можно применять?

2022-10-10 39
Вопрос: Есть идеи, как это можно применять? 0.00 из 5.00 0 оценок
Заказать работу

Ответ:

А применять это можно так, как у них написано это в скобках. Допустим, работают фильтры. Смотрите, я могу вот здесь на уровне этой группы взять и сказать: «вот если какие-то там не выполнены условия, то вот эти события они должны быть отсечены» - фильтр. Т.е. пользователь еще не справился с какими-то другими настройками и это событие пока рано обрабатывать. Всё. Я это перехватываю. Там мы увидим специальный метод, который говорит: «Событие – Consume». Т.е. мы потребили его (съели). Событие в общем закончилось и оно полностью себя изжило. Это фильтр. Очень удобно.

Или вот этот например, когда у вас всплывает. У вас событие пришло. Там что-то отработало и пошло вверх. Ну верх мы, конечно, реже ловим. Но представьте, что здесь какой-то аудит нужен или какое-то логирование нужно. И мое событие пошло и оно централизовано в одном месте. Что? Я буду каждое событие в лоб писать? Не вопрос. Вон в группу поставлю и все, что там было ниже по иерархии было я это смогу перехватить и в лоб записать. Такое событие было выполнено, такое событие было выполнено. Поэтому сегодня считается, что при наличии дерева объектов у нас есть такая механика, которая вполне неплохо выглядит.

Подписка на события

А вот, как можно подписаться.

Если вы хотите сделать фильтр – это когда вниз идем по иерархии – addEventFilter. Если хотим удалить, то removeEventFilter. В параметрах прописываете какое именно событие и ваш объект.

А вот вариант, где мы идем вверх – это Handler. Соответственно тут тоже самое.

Получается, что когда человек использует один из этих вариантов, то он должен два параметра предоставить. Тип параметра и сам объект, который будет событие ловить. Это значит придется смотреть, думать и вспоминать иерархию. И они подумали и посмотрели опять на нас и решили сделать для нас добро. И сделали для нас удобные методы. Те методы, которые называются: «setOnчто-то» - это и есть удобные методы. Почему? Там тип писать не надо, потому что он уже в названии указан и эти все методы «setOnчто-то» – они по сути перегружены на конкретные события. Вы выбираете «setOnчто-то» из списка и получаете уже четко простой метод дающий подписку на конкретное событие.

Здесь есть одно очень серьезное отличие:

addEventFilter или addEventHandler. Можете хоть 100 раз подписываться, потом сделать 100 раз remove. А удобный метод он позволяет на это событие повесить только один обработчик. И если второй будете вешать, вы не можете снять первый. Поэтому одна штука ровно. А метода removeнет. Есть только «setOnчто-то». А чтобы убрать надо сделать «setOnчто-то», а в параметре поставить null.

Пример кода:

Здесь были имена, но как это все писать на предыдущем слайде не было. А на этом слайде все конкретно показано уже с обработчиком.

ВотунасaddEventFilter. MOUSE_CLICKED. Видите? У нас здесь идет EventHandler. Они все в этом втором параметре, не важно Filterили Handler– это все EventHandler. Но! Он Generic. Поэтому у него в скобочках и будет написано для какого он типа. Здесь написано MouseEvent. Значит MouseEvent. А тогда параметр у методаhandle тоже будет MouseEvent. Т.е. вот эти Genericсделали. У нас типизация событий (event) и вы можете брать за счет того, что здесь есть GenericEventHandler, вы можете создать обработчик на InputEvent, который выше находится по иерархии, чем MouseEventи вот этот filter, созданный здесь подписан ниже на три разных события:

· на событие от мышки

· и на событие от KeyEvent

Вот вам обработчик. Одна функция – вот она handle, которая будет принимать абсолютно разные события. В Swing надо было делать какими-то своими способами. Сама Swing технология такого не предусматривает, а в JavaFXпожалуйста.

А вот пример на удобный метод.

Удобный метод – тоже EventHandler. Видите? Какая разница. Он один такой класс. Но когда вы будете выбирать «setOnAction»вы пишете newEventHandlerи Intellisenseуже знает, что подставлять. Т.е. здесь написано, например, onAction. А он понимает, что это событие связано с действиями (клики на кнопки и т.д.). ActionEvent сам подставляется в угловые скобки. А если это был бы setOnKeyPressed, то это события связанные с клавиатурой. Поэтому KeyEvent. Intellisenseпомогает написать обработчик. И вам не нужно ничего выбирать. Вы выбор свой сделали.


Поделиться с друзьями:

Опора деревянной одностоечной и способы укрепление угловых опор: Опоры ВЛ - конструкции, предназначен­ные для поддерживания проводов на необходимой высоте над землей, водой...

Индивидуальные очистные сооружения: К классу индивидуальных очистных сооружений относят сооружения, пропускная способность которых...

Индивидуальные и групповые автопоилки: для животных. Схемы и конструкции...

Адаптации растений и животных к жизни в горах: Большое значение для жизни организмов в горах имеют степень расчленения, крутизна и экспозиционные различия склонов...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.007 с.