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

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

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

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

2022-10-10 65
Вопрос: Зачем? Иерархию сделать несложно. Но смысл? Особенно часто мне задают такой вопрос те люди, которые программируют под 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 с.