Вопрос: Зачем знак решетки «#»? — КиберПедия 

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

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

Вопрос: Зачем знак решетки «#»?

2022-10-10 43
Вопрос: Зачем знак решетки «#»? 0.00 из 5.00 0 оценок
Заказать работу

Ответ: Решетка это некий специальный символ. Я ставлю буковку hи Intellisenseмне подсказывает нужный обработчик. Это в эту сторону. А там я сделал функцию, пометил ее аннотацией «@FXML». А в fxml-файле могу обработчик подписать.

А теперь в обратную сторону. Вы же понимаете, что в контроллере, допустим, мне на labelнужно какой-то текст вывести. Но извините! В контроллере какие у меня ссылки? Мне никто не передавал в конструктор ссылку на объект и т.д. Здесь тоже сделано через FXML-аннотацию. У вас в fxml-файле есть fx:id

fx – это специальное пространство имен, которое определяет некоторые атрибуты, которые нужны для самой FXML-архитектуры. В данном случае нам нужен был idшник.

Вот если вы дадите этому idшнику имя «test».

Вы ей дали id. Соответственно, если вы хотите, чтобы это idв Java-коде можно было поймать, то вы должны его описать в контроллере.

 

Когда это все в run-timeбудет парситься, собираться, то вот по этой аннотации виртуальная машина скажет: «Ага! Понятно!». Вот у меня там стоит , а в контроллере стоит . Вот это и должна быть ссылочка на тот объект. И эта ссылочка здесь нигде не установлена. Ее установит для вас виртуальная машина, используя данную аннотацию.

Нажимаем F6. Всё работает.

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

Кстати учтите, что такая технология программирования на сегодняшний день является основной. Вы будете работать, допустим, в Web-интерфейсе. Там тоже присутствуют аннотации. А аннотация говорит: «мне вашу ссылочку надо инициализировать!» и ищет на какой объект вы ее устанавливаете. Точно также работает сегодня EnterpriseJavaBeans. Вы скажете: «вот ссылочка! я хочу, чтобы она была установлена!». Ну обычно там пишется какая-нибудь аннотация и кроме аннотации какое-нибудь имя. И вам вручат соответствующий объем. Вы не создаете эти объекты. Вы не пишете зависимый код. Вы используете аннотации. А вам уже все это прикручивают, подвязывают и настраивают. И что мы получаем на выходе? А на выходе мы получаем уже вполне приличную MVC-архитектуру, потому что Viewу вас отдельно, бизнес-логика в контроллере, и осталось только с данными не промазать, если вы их сами не положите туда, куда не следует, а сделаете отдельный объект (или иерархию объектов), которая будет работать с данными, и соответственно брать (или класть) в БД, то мы уже получаем вполне четко сформированную архитектуру Model-ViewController. Уже неплохо. Это несомненный плюс.

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

Идем далее…

То, что я сейчас покажу, делать не обязательно. Можете посмотреть.

Смотрим специальные «импорты» в FXML-файле. Это важно, потому что это действительно подключение имен из библиотеки. Это взято не с потолка, а это имена классов.

Давайте попробуем немного поломать наш FXML-файл. Что будет если мы сейчас сделаем…

Ну во-первых я не хочу контроллер: «fx:controller="javafx2.FXMLDocumentController"». Я его удаляю. Также я и сам обработчик удалю: «onAction="#handleBA"», т.е. будет так: . Ломать так ломать. Вы скажете: «теперь нет обработчика!». Ну я не обязан писать обработчик на Java. Есть и другие языки программирования. Напишем на другом.

Вопрос: Какие вы еще знаете языки?

Ответ из зала: Python.

Ответ препода: Ха! Сильно! А я вот не знаю Python.

Я сделаю обработчик и он будет называться handle(event), т.е. так:

После чего я добавлю fx:script с соблюдением всех открывающих и закрывающих тегов. После чего я внутри пишу функцию handle. Я беру свой label«test»и устанавливаю туда текст.

И Intellisenceподсказывает: «а давай мы подключим язык? чтобы я знал, какой мы язык используем». Мы говорим: «ну давай». И в тегах мы его подключаем.

Итак, у нас здесь получается, что ЯП на котором мы будет обработчики писать – JavaScript.

Удаляем наш «контроллер». Теперь он нам не нужен.

Запускаем F6. Нажимаем на кнопочку и оно работает.

Довольно оригинально. FXML совместим с JavaScript.


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

Эмиссия газов от очистных сооружений канализации: В последние годы внимание мирового сообщества сосредоточено на экологических проблемах...

Таксономические единицы (категории) растений: Каждая система классификации состоит из определённых соподчиненных друг другу...

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

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



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

0.012 с.