06
Дек
2019

Возвращаем JavaFX к жизни: 21 урок для начинающих

Решил, что пора написать грандиозное многофункциональное приложение на Java, но не знаешь, с чего начать? Держи крутой видеокурс!

Мы собрали новую статью по просьбам трудящихся под этим материалом. Да, JavaFX удаляется из последних версий JDK. Но есть трюки, которые вернут старый добрый инструмент. Смотри, как это сделать:

А теперь, когда всё установили и настроили, приступаем к видеокурсу :)

1. HelloWorld

Первый урок курса по традиции посвящен базису. JavaFX – это инструмент для создания кроссплатформенных UI-приложений. Первая особенность – наличие в структуре приложения непривычных элементов: Scene и Stage, которые позволяют создавать более гибкий и управляемый код. Другая фича – поддержка HTML, CSS и JS.

Ты напишешь свое первое FX-приложение, а пользователи ОС Linux в конце ролика получат совет, как починить самый первый запуск.

2. Java Packager

В этом уроке ты узнаешь, как скомпилировать код, засунуть его в джарник и сделать самовыполняющийся "джава-архив" с программой. Все это можно сделать и напрямую из консоли, но иногда полезно иметь под рукой что-то автозапускаемое.

На выходе ты получишь архив, содержащий INF-файл с данными о джарнике и основной класс. Запуск для Windows осуществляется двойным кликом, а для Linux – из терминала.

3. Shapes

Здесь ты будешь учиться рисовать фигуры в JavaFX. Фигур может быть много: круг, эллипс, треугольник и, как ни странно, текст – это тоже фигура. Концепция проста, так что поняв, как это работает на объектах из урока, ты сможешь рисовать и другие фигуры.

До появления FX этими задачами занималась библиотека AWT: если ты с ней знаком, тебе будет скучновато на этой лекции.

4. Canvas

В предыдущем уроке рассматривался процесс создания фигур при помощи нативных методов. Здесь ты узнаешь, как все это проделать на Canvas.

Автор заранее подготовил метод с кучей действий для работы с разными фигурами. Занятный процесс оперирования графикой сопровождается поиском неисправности. Попробуй найти ее раньше ведущего ;)

5. Properties и binding

Речь пойдет о биндинге и пропертис. Пропертисы – это обертки над классами: int –> IntegerProperty. Зачастую эти штуки используются при создании JavaBeans.

Еще один удобный функционал – биндинг. Он позволяет менять одно значение при изменении другого.

В конце урока автор рассматривает интересную и тесно связанную с биндингом тему – ChangeListener.

6. Layout

Если ты знаком со Swing, то понять это в разрезе JavaFX не составит труда. Многофункциональный инструмент помогает размещать элементы на панели создаваемого интерфейса программы. Существует несколько принципов размещения, но автор рассмотрит только самые распространенные. Занятие подкрепляется понятными примерами кода.

7. UI Controls

Возможно, ты уже знаком с различными элементами вродеtextField, button и т. д., поскольку добавлял их на форму. В этой лекции автор остановится на нюансах работы с каждым из них. Будет представлен интерфейс со всеми существующими элементами, которые можно использовать в своих целях.

8. Кастомный Control

Этот видос научит тебя создавать кастомные контроллы – те, которые ты сам придумаешь. Возможности безграничны, особенно радует поддержка CSS. Есть два варианта создания собственных элементов: непосредственно силами Java и FXML.

Автор объяснит на примере TextField, как можно расширить его функционал, создав свой собственный элемент для формы.

9. Обработка событий

Если ты давно хотел разобраться, как работает процесс управления нажатиями и прочими событиями, то пришел твой час. Основные события – это KeyEvent, MouseEvent, ActionEvent, а остальные используются реже (на досуге почитай и потести другие ивенты).

Для начала нужен контролл, добавленный на форму. А дальше вешаем обработчик на нужный котролл и внутри метода пишем код. Все элементарно. Пробуй сам или повторяй по уроку.

10. Работа с изображениями

Довольно простая тема (поначалу). Урок начинается с добавления картинки в основное окно приложения через InputStream и указания ссылки на объект. В качестве усложнения задания будет предложен вариант просмотра/замены пикселей в исходном изображении при помощи GetPixelReader и PixelReader/Writer. Занятная тема, т. к. позволяет потренировать навыки и вспомнить Java Core.

11. Анимация

Анимация в Java реализуется достаточно просто, но понадобится много кода. Лектор показывает подготовленную заранее программку, выводящую в окне приложения элементарную анимацию.

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

12. Scene Builder

На этом уроке ты узнаешь, что такое Scene Builder и зачем он тебе нужен. Данный инструмент не поставляется вместе с Java, и его нужно скачивать отдельно с официального сайта Oracle.

В окне билдера собраны и удобно скомпонованы все элементы, присутствующие в JavaFX. Все просто: выбирается элемент слева и драгндропом переносится вправо, в контейнер. Изменять свойства каждого добавленного элемента можно непосредственно в меню элемента.

Вся прелесть билдера в том, что сохраненную форму можно спокойно перенести в свой проект JavaFX и там создать обвязку, обработку и прочее.

13. CSS

Ранее в лекциях упоминалось о существовании CSS в работе с JavaFX. Пришло время разобраться! До появления JavaFX был неудобный и громоздкий Swing, в котором кастомить элементы можно было с огорчением и болью. FX вобрал в себя все лучшее от HTML и позволяет “по щелчку” изменять любое свойство элемента.

В комплекте с JavaFX идет набор стилей, которые можно взять и прилепить к приложению быстро и легко. Либо на его основе сделать модификацию. Это и будет темой урока.

14. FXML

Пытливый зритель заподозрит неладное и задумается: "А чем Scene Builder или чистая Java не подходит?". Самое главное – это удобство использования и внесение изменений в XML-файлы без перекомпиляции. Автор приводит объяснения из официального хелпа, чем одно лучше другого.

Единственная проблема – обработка событий. Но все оказывается проще некуда.

15. Media

JavaFX умеет проигрывать музыку и видео. Лектор покажет простой и понятный способ реализации такого функционала. Для этого нужен класс Media, в который ты можешь передать URL или файл. А дальше все элементарно: добавляй кнопки управления, оформляй окно проигрывателя и прочее.

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

16. Отображение HTML и JavaScript в WebView

Пробуем работать с HTML и JS: в окошке JavaFX будет выводиться HTML, Java будет отдавать функции JS и наоборот.

Для отображения HTML обычно используется движок WebKit и webView. Эта штука может выводить инфу (loadContent) из URL, строки или файла. С помощью WebView можно работать с Web-элементами напрямую вплоть до выполнения JS-скрипта, который меняет кучу параметров и перерисовывает страницу. Круто, правда?

17. Графики – Charts

В Java существует 6 типов графиков и все они работают аналогично: создается график, в него кладется инфа (зачастую используются списки), и все работает. В ролике автор использует в качестве примера Pie chart. Видос короткий, но простой и понятный, позволяющий сразу что-то наваять.

18. Работа с 3D

В уроке много кода, но автор постепенно объяснит суть каждого куска. Тренироваться ты будешь на цилиндре, а другие объекты разберешь самостоятельно по аналогии.

JavaFX позволяет менять различные параметры, вплоть до градиента окраски объекта, а эффект трехмерности достигается с помощью инструмента PerspectiveCamera.

19. Collections

В коллекциях JavaFX есть интерфейсы: ObservableList, ObservableMap, ListChangeListener, MapChangeListener. Это обычные листы и мапы, но они позволяют отлавливать изменения и реагировать на события.

Лектор показывает, как срабатывает реакция на изменение данных в списке.

20. Concurency

Как и в случае с коллекциями, в теме многопоточности тоже существует несколько классов и интерфейсов, реализующих и работающих с многопоточностью. Такой подход позволяет более эффективно работать связке между приложением FX и потоками. JavaFX предоставляет свои классы Task и Service из пакета javafx.concurrent. В Task описывается конкретное действие, которое требуется выполнить, а Service запускает все это счастье.

21. Swing и Fx

В завершающем уроке ты научишься добавлять в Swing элементы из JavaFX. В Java есть классная штука – JFXPanel, которую нужно добавить в контейнер (Frame), указать все необходимые параметры, добавить группу элементов и сцену. Подробнее об этом в последнем уроке.

Как тебе уроки? Что скажешь о JavaFX?

Источник: https://proglib.io/p/21-urok-po-javafx-dlya-nachinayushchih-2019-12-06

Share

Тебе может это понравится...