Вопрос: Зачем? Иерархию сделать несложно. Но смысл? Особенно часто мне задают такой вопрос те люди, которые программируют под WinApi. Или работал с Eclipse версией SWT. — КиберПедия 

Папиллярные узоры пальцев рук - маркер спортивных способностей: дерматоглифические признаки формируются на 3-5 месяце беременности, не изменяются в течение жизни...

Автоматическое растормаживание колес: Тормозные устройства колес предназначены для уменьше­ния длины пробега и улучшения маневрирования ВС при...

Вопрос: Зачем? Иерархию сделать несложно. Но смысл? Особенно часто мне задают такой вопрос те люди, которые программируют под WinApi. Или работал с Eclipse версией SWT.

2022-10-10 67
Вопрос: Зачем? Иерархию сделать несложно. Но смысл? Особенно часто мне задают такой вопрос те люди, которые программируют под WinApi. Или работал с Eclipse версией SWT. 0.00 из 5.00 0 оценок
Заказать работу

Ответ: А я хочу сделать одну функцию, которая обрабатывала бы все события. Когда мы мышкой рисовали, что у нас было с вами? На закрытие – обработчик. На мышку – обработчик. Сколько у нас было написано функций, которые разные события принимали. Вот! Работа с окном. 7 событий! 7 функций! И так далее. И получается, чтобы мне обработать приличное количество событий, придется написать ну ладно 6-7 интерфейсов, но это будет 20-25 функций. А одну я могу написать? В Swing вы не можете этого сделать, потому что там нет никакой иерархии и вы не можете сделать обработчик для суперкласса. Типа данных нет. Они там все типизированные. Вы должны подписаться и реализовать интерфейс – mouseListener.И я не могу туда подписать кого-то другого. А у них у всех разные функции, у них разные входные параметры. Посмотрите на mouseListener. Какая у него там функция внутри? Она получает одно событие. Любая оконная функция получает какой-то BuilderEvent. У них у всех разные события. У них нет суперкласса. Он там, конечно, там есть, но он называется просто скорее всего EventилиEventObject. Но в общем там нельзя сделать одну функцию, а здесь можно. Здесь иерархия.

Одну функцию создавать, конечно, смешно, но, например, я хочу обрабатывать все inputсобытия. Не вопрос. Вон у них есть суперкласс – inputEvent. Вот это здесь будет работать в JavaFX. Поэтому такая централизация обработки здесь возможна. И это правильно. Бывает полезно. В SWTтак сделали. Ну и, конечно, они не забыли про всякие современности – Drag-and-Drop, события связанные с сенсором, и вообще все что только можно и нужно, они все в эти события добавили. Но это не все изменения в событиях.

Дело в том, когда появляется событие в JavaFXоно не предназначено для конкретно одного элемента в Web-интерфейсе. Вот мы кликаем по кнопочке в Swing. У кнопочки событие. А здесь событие ходит по дереву объектов.

1. Первая фаза: Вначале событие называется неважно как, например, «погружение». Событие идет с корня до нужного элемента. Возникла в этом элементе.

2. Вторая фаза: Она называется «всплывающая фаза». Событие уходит теперь от этого элемента, и движется обратно к корню.

Т.е. сначала идет вниз, а потом вверх. Вот так это реализовано в JavaFX.

у каждого события есть несколько характеристик:

«Target» - кому предназначено событие и оно не меняется. Мышкой кликнули на элементе и он target. Не важно событие движется вверх или вниз. Targetне меняется.

Также у события есть тип«EventType». На следующем слайде представлена иерархия.

A node can register more than one filter. The order in which each filter is called is based on the hierarchy of event types. Filters for a specific event type are executed before filters for generic event types. For example, a filter for the MouseEvent.MOUSE_PRESSED event is called before the filter for the InputEvent.ANY event. The order in which two filters at the same level are executed is not specified. A node can register more than one handler. The order in which each handler is called is based on the hierarchy of event types. Handlers for a specific event type are executed before handlers for generic event types. For example, a handler for the KeyEvent.KEY_TYPED event is called before the handler for the InputEvent.ANY event. The order in which two handlers at the same level are executed is not specified, with the exception that handlers that are registered by the convenience methods described in Working with Convenience Methods are executed last.

· InputEvent

· ActionEvent

· WindowEvent

Также у события есть понятие «Source». Это тот элемент, через который мы сейчас проходим. Вот будем вот здесь – он будет Source. Будем вот здесь – он будет Source. Т.е. Sourceон меняется.

Прошли по этой линии вниз, и потом обратно. Погружение – всплытие.


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

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

Семя – орган полового размножения и расселения растений: наружи у семян имеется плотный покров – кожура...

Типы оградительных сооружений в морском порту: По расположению оградительных сооружений в плане различают волноломы, обе оконечности...

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



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

0.008 с.