Как сделать десктопное приложение на java
Однажды у меня возникла идея, написать небольшое настольное приложение для своих нужд — что-то типа небольшого словаря для изучения иностранных слов — и я начал ломать голову, а как бы мне это сделать? Естественно, первое, что мне пришло в голову — Swing. Все наверняка слышали о Swing . Это библиотека для создания пользовательских, графических интерфейсов. В связи с тем, что наш горячо любимый Oracle еще не полностью отказался от Swing, он не считается устаревшим, и приложения на нем по-прежнему работают. Однако он больше не модернизируется Swing, и ребята из Oracle дали нам понять, что за JavaFX будущее. Да и по сути, JavaFX использует компоненты Swing как поставщика услуг)
Что такое JavaFX?
Особенности JavaFX:
- JavaFX изначально поставляется с большим набором частей графического интерфейса, таких как всякие там кнопки, текстовые поля, таблицы, деревья, меню, диаграммы и т.д., что в свою очередь сэкономит нам вагон времени.
- JavaFX часто юзает стили CSS, и мы сможем использовать специальный формат FXML для создания GUI, а не делать это в коде Java. Это облегчает быстрое размещение графического интерфейса пользователя или изменение внешнего вида или композиции без необходимости долго играться в коде Java.
- JavaFX имеет готовые к использованию части диаграммы, поэтому нам не нужно писать их с нуля в любое время, когда вам нужна базовая диаграмма.
- JavaFX дополнительно поставляется с поддержкой 3D графики, которая часто полезна, если мы разрабатываем какую-то игру или подобные приложения.
- Stage — по сути это окружающее окно, которое используется как начальное полотно и содержит в себе остальные компоненты. У приложения может быть несколько stage, но один такой компонент должен быть в любом случае. По сути Stage является основным контейнером и точкой входа.
- Scene — отображает содержание stage (прям матрёшка). Каждый stage может содержать несколько компонентов — scene, которые можно между собой переключать. Внутри это реализуется графом объектов, который называется — Scene Graph (где каждый элемент — узел, ещё называемый как Node ).
- Node — это элементы управления, например, кнопки метки, или даже макеты (layout), внутри которых может быть несколько вложенных компонентов. У каждой сцены (scene) может быть один вложенный узел (node), но это может быть макет (layout) с несколькими компонентами. Вложенность может быть многоуровневой, когда макеты содержат другие макеты и обычные компоненты. У каждого такого узла есть свой идентификатор, стиль, эффекты, состояние, обработчики событий.
JavaFX: примеры использования
Знакомство с JavaFX SceneBuilder
Небольшое отступление. JavaFX уроки
- delete — по индексу удаляем выбранную(выделенную) собаку;
- edit — создаем новую собаку с переданными данными, и задаем ее вместо той которая была до этого;
- create — создаем новую собаку и дергаем метод вызова окна создания, передав новый объект, и после закрытия которого если имя не null, то сохраняем нового питомца.
Разработка программ на Java – не особо сложный процесс. В статье мы разработаем крутое приложение с отличным дизайном и функциями. Для программы мы воспользуемся JavaFx.
Установка всего
Также зайдите на сайт Oracle и скачайте Java . Рекомендуем скачать и установить Java 11, так как с Java 13 будут разного рода ошибки при работе с Javafx.
Создание проекта
Через любую среду разработки создайте новый JavaFx проект.
После создания проекта нужно добавить библиотеку JavaFx. Если вы работаете с Intellij IDEA, то вам нужно зайти в «File - Project Structure», далее перейти в модули и добавить в качестве нового модуля все файлы из папки lib , что находится в скачанной папке JavaFx . После добавления не забываем установить галочку, а также нажать на Окей.
После заходим в настройки: «Run - Edit configuration» и в поле «VM Options» прописываем полный путь к папке JavaFx:
Создание дизайна
Для создания дизайна используйте программу Scene Builder . Внутри неё откройте ваш проект, а именно файл «sample.fxml». Через эту программу вы можете прописать весь дизайн для приложения.
После перетаскивания объектов и добавления к ним стилей, вы можете добавить ID для объектов, с которыми вы будете взаимодействовать, а также вам стоит указать рабочий контроллер для обработки всех функций в приложении.
В этой же программе можно посмотреть готовый вариант дизайна, а также же можно получить шаблон кода для класса контроллера. Для этого переходим: «View - Show sample skeletone code», где мы получаем весь код и копируем его. Этот же код разместите в контроллере вашего приложения.
Создание функций
Остается прописать весь функционал. Ниже представлен полный код основного контроллера, но также по этой ссылке вы можете скачать готовый проект всей программы.
Код класса контроллера:
Видео на эту тему
Также вы можете просмотреть детальное видео по разработке данного приложения:
Дополнительный курс
На нашем сайте также есть углубленный курс по изучению языка Java . В ходе огромной программы вы изучите не только язык Java, но также научитесь создавать веб сайты, программы под ПК, приложения под Андроид и многое другое. За курс вы изучите массу нового и к концу программы будете уметь работать с языком Java и создавать на нём полноценные проекты.
Больше интересных новостей
Как разрабатывать HTML 5 Desktop приложения на Java?
Мотивация
Для меня, как для разработчика, очень важно делать пользовательские интерфейсы удобными, интересными и позволяющими пользователям не отвлекаться от работы. Кроме того, очень хочется, чтобы интерфейсы были привлекательными и их было приятно показывать. Все эти соображения приводят нас к неутешительному выводу: существующие UI фреймворки для настольных приложений ужасны.
Так что же такое есть в веб-приложениях, чего нет в настольных?
- Разнообразие визуального оформления
- Адаптивные и идеально-масштабируемые интерфейсы
- Развитые анимации
- Богатый набор компонентов и библиотек для разработки UI
Системный кризис UI фреймворков в Java
Поищите в Java мире что-нибудь похожее по возможностям на JavaFX и вы сильно расстроитесь. Ничего нет! Есть жуткий Swing, есть сторонние технологии, позволяющие использовать Qt для Java, но все эти технологии являются полумерами. Так что если вы хотите написать Desktop приложение на Java, то вам придётся использовать JavaFX.
Когда вы воспользуетесь JavaFX, вы заметите, как мало сторонних компонентов написано, и как мало людей по-настоящему полагаются на JavaFX. Это всего лишь одна из технологий.
Но есть некоторые области, в которых до сих пор нельзя обойтись без Desktop приложений:
- Приложения CALL-центров для приёма заказов такси
- Приложения, требующие поддержку работы Offline
А ведь как здорово было бы использовать HTML/CSS/JS для реализации UI в этих приложениях?
Как должно выглядеть HTML5 приложение?
Представьте, что вы запустили ваш любимый web-сайт вне браузера в виде Desktop приложения и оно выглядит, как если бы это была отдельная вкладка браузера без лишних меню, декораций и панелей, так как если бы это было приложение, которому доступны нотификации на рабочем столе и интеграция с другими приложениями, автоматическое обновление и оно может работать в отсутствии интернета.
О, это было бы волшебно!
Как реализовать такое приложение на Java?
Desktop приложения на базе Electron включают две составляющие:
- Backend в виде Node.JS приложения
- Frontend в виде JavaScript компонентов или Single-Page-Application
Но наше горе, как Java разработчиков, состоит в том, что наши приложения написаны на Java и мы не хотим их переписывать на JavaScript.
Я изучил этот вопрос и выделил пару живых вариантов реализации HTML5 UI в Desktop приложении на Java:
- JavaFX WebView + Jetty
- Java CEF + Jetty
Поскольку само Desktop приложение будет так же написано на Java, то мы сможем использовать все фишки Desktop приложений: создавать дополнительные окна, показывать нативные меню, добавлять иконки в трей и показывать уведомления.
JavaFX WebView
1- Введение
Eclipse 4.6, 47 (NEON, OXYGEN)
В данной статье я ознакомлю вас с программированием приложения Desktop с SWT.Вопросом является, есть ли в Java способ выбора технологии для программирования приложения Desktop, или какая технология помогает программировать веб приложение с интерфейсом похожим на приложение Desktop.
2- RCP (Rich Client Platform)
RCP (Rich Client Platform) - Это платформа (Platform) разработанная на основе SWT, используется для программирования приложений Desktop и еще дальше он построил для вас платформу, позволяющую вас разрабатывать приложения Desktop вида Workbench, похоже на Eclipse IDE, или программировать Plugin которые могут интегрировать в Eclipse IDE.
Но даже если вы хотите использовать только SWT для программирования не использовать то, что предоставлено RCP-ом вам так же нужно создать приложение RCP.
- Использовать только свойства SWT
- Использовать платформу предоставленную RCP для программирования приложения RCP Workbench.
3- Необходимые настройки для начала
Есть необходимые настройки, которые нужно сделать перед тем, как начать:
Вам нужно иметь Eclipse самой новой версии. Сейчас это Eclipse 4.7 (Код OXYGEN).
По-моему вам нужно скачать пакет: "Eclipse IDE for Java EE Developers". Пакеты отличаются колличеством Plugin, для разных целей программирования. В процессе программирования можно установить дополнительно Plugin для других целей.Установка Plugin WindowBuilder, это 1 Plugin позволяющий вас сделать интерфейс дизайна приложения SWT с помощью перетаскивания, очень удобно.
Смотрите инструкцию установки по ссылке:
4- Некоторые понятия о SWT.
4.1- Display & Shell
Класс Display и Shell являются ключевыми компонентами приложения SWT.
- org.eclipse.swt.widgets.Shell описывает окно (Window)
- org.eclipse.swt.widgets.Display отвечает за управление цикла события (event loops), шрифт, цвет и контролирует информацию коммуникации между потоками интерфкйса пользователя (UI Thread) и другими потоками (other Thread). Display это основа для всех способностей свойств SWT.
Каждое приложение SWT требует минимум один Display и один или более объектов Shell.
Читайте также: