00 Руководство по JavaFX
JavaFX - это набор инструментов GUI для Java (GUI - сокращение от Graphical User Interface). JavaFX упрощает создание настольных приложений и игр на Java. Это руководство по JavaFX представляет собой многостраничное руководство, объясняющее основные функции JavaFX. См. Список статей в разделе, чтобы увидеть все темы, затронутые в этом руководстве по JavaFX (на мобильных устройствах проверьте содержание следа на нижней панели навигации). Далее на этой странице есть обширный список.
Почему именно JavaFX?
JavaFX является отличной платформой для приложений с графическим интерфейсом по нескольким причинам. Прежде всего, Java по-прежнему остается одним из самых популярных языков программирования в мире с большим набором стандартных классов и богатым набором инструментов с открытым исходным кодом, разработанных сообществом разработчиков Java.
Во-вторых, JavaFX может работать на всех следующих ОС и устройствах:
- Windows
- Linux
- Mac
- iOS
- Android / Chromebook
- Raspberry Pi
Это делает JavaFX универсальным набором инструментов для разных ОС и устройств.
В-третьих, JavaFX поставляется с богатым набором элементов управления с графическим интерфейсом, а наборы инструментов с открытым исходным кодом добавляют еще больше инструментов в общую экосистему.
Возможности JavaFX
JavaFX поставляется с большим набором встроенных компонентов графического интерфейса пользователя, таких как кнопки, текстовые поля, таблицы, деревья, меню, диаграммы и многое другое. JavaFX можно стилизовать с помощью CSS и / или программно. JavaFX поставляется со встроенной библиотекой диаграмм, которую вы можете использовать для простых диаграмм. JavaFX поддерживает 2D и 3D графику. JavaFX имеет WebView, который может отображать современные веб-приложения.
Вот более полный список концепций, компонентов и функций JavaFX:
- Core
- Layout
- Основные элементы управления
- Label
- Button
- MenuButton
- SplitMenuButton
- ButtonBar
- ToggleButton
- RadioButton
- CheckBox
- ChoiceBox
- ComboBox
- ListView
- TextField
- PasswordField
- TextArea
- ImageView
- DatePicker
- ColorPicker
- Slider
- Tooltip
- Hyperlink
- ProgressBar
- ProgressIndicator
- MenuBar
- ContextMenu
- Separator
- TableView
- TreeView
- TreeTableView
- HTMLEditor
- Pagination
- FileChooser
- DirectoryChooser
- Spinner
- Контейнерные Элементы Управления
- Web
- Графики
- Другие Понятия
- Fonts
- TextFormatter
- Dialogs
- Color
- 2D Shapes
- 3D Shapes
- Effects
- Transformations
- Animation
- Canvas
- PixelBuffer
- Drag and Drop
- Audio
- Video
- Print API
- High DPI resolution screen support
- Concurrency in JavaFX
Сторонние ресурсы JavaFX
Есть несколько интересных сторонних ресурсов. Я перечислил некоторые из них здесь:
- JavaFX Drift - OpenGL и др. Поддержка JavaFX. Полная интеграция в граф сцены.
- ControlsFX - Дополнительные элементы управления пользовательского интерфейса для JavaFX.
- GemsFX - Дополнительные элементы управления пользовательского интерфейса для JavaFX.
- TilesFX - Дополнительные элементы управления пользовательского интерфейса для JavaFX.
Ресурсы, связанные с JavaFX:
- Skija - Быстрая 2D-графика для Java - с использованием графики с аппаратным ускорением.
Приложения JavaFX
Вот некоторые из общедоступных приложений, созданных с помощью JavaFX, чтобы вы могли сами убедиться в возможностях JavaFX:
- DBFX - бесплатное графическое приложение для управления базами данных (консоль управления).
Почему настольные приложения?
Почему собственные / локальные приложения предпочтительнее для мобильных устройств, а веб-приложения - для настольных компьютеров? Почему собственные / локальные приложения не подходят для обоих типов устройств?
Собственные / локальные приложения, как правило, обеспечивают лучший пользовательский интерфейс, чем веб-приложения, поскольку они более отзывчивы (быстрее, быстрее), имеют более продвинутые элементы управления графическим интерфейсом и лучше интегрируются с локальным устройством. Две самые большие проблемы для традиционных настольных приложений - это низкая пропускная способность Интернета и громоздкий процесс установки. Обе эти проблемы в значительной степени решены с помощью высокоскоростных подключений к Интернету, которые довольно распространены, а также с помощью магазинов приложений для частных устройств и систем установки по требованию для корпоративных машин.
На мой взгляд, родные / локальные приложения должны быть предпочтительнее для всех приложений, которые часто используются или где рабочий процесс несколько сложен. Собственные / локальные приложения также должны быть предпочтительны для приложений, которым необходим доступ к локальному диску компьютера, на котором они работают, или которым необходимо взаимодействовать со многими различными удаленными системами, а иногда и с использованием других протоколов, кроме HTTP (например, IAP или потоковых протоколов и т. Д. ). См. Примеры использования JavaFX для получения дополнительных примеров приложений.
Приложения, которые пользователь использует редко или которые пользователь не очень заинтересован в загрузке и установке, вероятно, должны оставаться веб-приложениями. Например, приложение для входа в систему и управления вашими страховыми контрактами, вероятно, можно будет реализовать в виде веб-приложения. Но инструмент управления проектами, который ваши пользователи используют несколько раз в день, вероятно, лучше быть настольным приложением.
Примеры использования JavaFX
Меня несколько раз спрашивали, не умерли ли настольные приложения - действительно ли остались варианты использования чего-то вроде JavaFX. Это правда, что многие приложения хорошо подходят для веб-приложений, потому что вы обращаетесь к ним редко, а ресурсы, к которым вы обращаетесь, в любом случае хранятся на сервере. Но есть также несколько типов приложений, которые лучше реализовать как настольные приложения.
Как упоминалось во введении, мы в Nanosai на самом деле разрабатываем настольное приложение с использованием JavaFX. Мы делаем это, потому что этому приложению нужен доступ к локальному диску, он должен иметь возможность взаимодействовать через другие сетевые протоколы, кроме HTTP, и ему нужны некоторые другие функции, которые стандартный веб-браузер просто не предоставляет.
Вот список некоторых общих вариантов использования JavaFX:
- Инструменты разработчика
- IDE
- Редакторы
- Инструменты сжатия / шифрования файлов
- Инструменты сканирования локального диска
- Инструменты обслуживания локальной системы
- Инструменты резервного копирования
- Сканирование на вирусы
- Служебные приложения
- Skype / Messenger / Чат
- Инструменты для создания снимков экрана
- Редактирование фото и видео
- Видео плееры
- Редактирование аудио
- Аудиоплееры
- Игры
- Инструменты для анализа данных
Вот некоторые из настольных приложений, которые я регулярно использую:
- IntelliJ IDEA
- Notepad++
- SourceTree
- SnagIt
- Putty
- WinSCP
- Skype
- Signal
- Telegram
- PhotoShop
- Premiere Pro
- VideoLAN (VLC)
- EDraw
Кроме того, несколько компаний, которые начали с веб-приложений, позже добавили собственные / локальные настольные приложения. Вот некоторые из них:
- YouTube Music
- Spotify
- Microsoft Teams
- Slack
- Google Drive
JavaFX на мобильных устройствах
Gluon предлагает набор инструментов, которые помогут вам создать и упаковать приложение JavaFX в виде собственных образов для мобильных устройств (Android и iOS).
JavaFX на Raspberry Pi
Также можно запустить JavaFX на компьютере Raspberry Pi. Вы можете узнать больше о том, как запустить JavaFX на Raspberry Pi, в книге Getting started with Java on the Raspberry Pi
JavaFX из Java 11
Начиная с Java 11, JavaFX снова был удален из Java SDK. JavaFX был выделен в собственный проект с открытым исходным кодом. Это означает, что для загрузки JavaFX из Java 11 / JavaFX 11 вам необходимо перейти по ссылке:
Однако JavaFX продолжает развиваться и по-прежнему пользуется большой популярностью среди пользователей.
Игровой движок JavaFX
Алмас Баим создал игровой движок FXGL JavaFX. Вы можете найти его:
https://github.com/AlmasB/FXGL
JavaFX против Swing
Возможно, вы знаете, что в Java есть еще один набор инструментов с графическим интерфейсом, который называется Java Swing (или JFC). Если вам интересно, в чем разница между двумя наборами инструментов, я перечислил некоторые из основных различий ниже:
Feature | JavaFX | Swing |
---|---|---|
Привязки свойств | Свойства JavaFX поддерживают привязку, то есть вы можете отслеживать изменения в их значениях. | Свойства Swing не поддерживают привязку напрямую. |
Декларативный макет | JavaFX поддерживает декларативную компоновку через FXML. | Swing не имеет встроенной поддержки декларативного макета. |
Дизайн | JavaFX поддерживает стили на основе CSS и кода. | Swing поддерживает только стили на основе кода. |
Веб-просмотр | JavaFX имеет WebView, который может отображать современные веб-страницы. | Swing не имеет WebView. |
Графика | JavaFX использует векторную графику. | Swing использует графику на основе пикселей. |
3D Графика | JavaFX имеет встроенную поддержку 3D-графики. | Swing требует Java 3D API для трехмерной графики. |
API параллелизма | JavaFX имеет встроенный API параллелизма. | Swing не имеет встроенного API параллелизма. |
Возраст инструментария | JavaFX новее. | Качели старше. |
Включен в Java SDK | JavaFX не входит в состав Java 11 и более поздних версий. | Swing все еще включен, но, вероятно, когда-нибудь будет удален. |
Примеры JavaFX на GitHub
Для вашего удобства я начал добавлять многие примеры JavaFX из этого руководства в общедоступный репозиторий GitHub. Примеры - это готовые к запуску автономные примеры, каждый со своим собственным методом class + main () для запуска этого конкретного примера. Вот репозиторий GitHub:
Книги по JavaFX
Вот самые полезные книги о JavaFX, которые я прочитал:
JavaFX JavaDoc
Вы можете найти JavaFX 11 JavaDoc здесь: