Есть ли способ добавить JavaFX 20 в мой существующий проект Maven Java 20 в среде IDE NetBeans?

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

Я провел обширное исследование, чтобы выяснить, могу ли я использовать JavaFX в своем проекте, и если да, то как.

Может ли кто-нибудь дать мне некоторое представление об этом, и как я смогу этого достичь. Если включение JavaFX в мой код Java невозможно, могу ли я получить альтернативу, например, создать совершенно новый проект JavaFX и добавить свой код из моего файла Java.

Пример того, о чем я говорю:

(Action Listener) * При нажатии кнопки * {

(JavaFX принимает имя переменной текущей JPanel и переходит к другой JPanel)

}

Я попытался установить библиотеку JavaFX в свою среду IDE NetBeans, и это сработало. Однако я не пытался напрямую добавлять JavaFX в свой проект.

Я думаю, что должно произойти то, что это соответствует моему коду, поскольку JavaFX написан на java. Однако благодаря своим исследованиям я узнал, что JavaFX является модульным, поэтому, чтобы оправдать мои ожидания, мне пришлось бы создать совершенно новый проект JavaFX и импортировать в него свой код.

Я не уверен, хотя и хотел бы, чтобы внешний вклад в этом.

IMO, проще всего переключиться на JDK, который уже включает JavaFX (Azul Zulu JDK FX или BellSoft Liberica Full JDK). Затем вы можете написать код JavaFX в своем проекте, и он просто будет работать. Эти дистрибутивы уже включают JavaFX в систему базовых модулей. Если вы не хотите этого делать, следуйте инструкциям на openjfx.io.

jewelsea 18.08.2023 03:33

Поскольку вы используете Swing с JavaFX, см. руководство Oracle JavaFX Swing, которое немного устарело, но все же в основном правильно.

jewelsea 18.08.2023 03:38
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
2
50
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

JavaFX против Swing

Ваше упоминание о JPanel наводит меня на мысль, что в настоящее время вы используете Swing в качестве своей среды графического интерфейса.

Вы должны понимать, что JavaFX является преемником Swing. JavaFX призван заменить Swing, а не дополнить его.

Смешивание JavaFX и Swing

👉🏼 Вы можете смешивать некоторый контент JavaFX в приложении Swing. Точно так же вы можете смешивать некоторое содержимое Swing в приложении JavaFX. Но есть проблемы и ограничения в таком смешивании.

Поэтому, если вы только запускаете приложение, я обычно предлагаю выбрать один из двух фреймворков и придерживаться его. Смешивание лучше всего подходит для больших приложений, которые не могут позволить себе грандиозную переработку и хотят постепенно перейти от Swing к JavaFX.

Чтобы узнать больше о смешивании JavaFX и Swing, начните с этого несколько устаревшего руководства от Oracle, JavaFX-Swing Interoperability.

Модульность

JavaFX является модульным, поэтому, чтобы оправдать мои ожидания, мне пришлось бы создать совершенно новый проект JavaFX.

Да, JavaFX имеет модульную структуру с помощью Модульной системы платформы Java . Это несколько усложняет настройку. Вам понадобится короткий module-info.java файл. Вы найдете несколько примеров, написанных мной и другими, прямо здесь, на Stack Overflow. Кроме того, ваша IDE может помочь с исправлением конфигурации модуля (IntelliJ помог мне).

Технически вы можете переделать существующее приложение, сделав его модульным. Но лично мне лень… Я бы начал новый проект с уже модульным шаблоном приложения.

Новый проект

создание совершенно нового проекта JavaFX

Если вы решите использовать JavaFX, я бы посоветовал пойти по этому пути. Начните с нового проекта JavaFX, настройте его и запустите с работающими компиляциями и сборками.

Управляйте своим проектом с помощью Apache Maven или Apache Gradle . Эти инструменты управления зависимостями автоматически загрузят и установят необходимые библиотеки JavaFX (фактически, библиотеки OpenJFX). И эти инструменты также будут очень полезны, когда вы позже захотите упаковать готовое приложение с помощью связанной JVM через jlink и jpackage и, возможно, создать собственный код заблаговременной компиляции используя GraalVM.

Предостережение… Честно говоря, позвольте мне признаться:

  • Я обнаружил, что процесс связывания JVM с моим приложением JavaFX довольно сложен и разочаровывает. До сих пор я потерпел неудачу и сдался на данный момент. Мое текущее приложение JavaFX должно быть доставлено моим первым нескольким пользователям после установки JVM в комплекте с библиотеками JavaFX на локальные машины пользователей.
  • Что касается компиляции AOT для нативного кода, то для меня это тоже было неудачей. Но я новичок в этом, и эти технологии относительно новые и передовые.

Очевидно, другие добились успеха, поэтому я попытаюсь снова. Когда я это сделаю, я сначала попробую явные консольные команды, показанные Кевином Рашфортом в его презентации 2023 года, JavaFX 20 и далее.

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

Maven/Gradle важнее вашей IDE

в среде IDE NetBeans?

Я ожидаю, что вы добьетесь успеха во всем этом при использовании NetBeans, поскольку Maven/Gradle работают одинаково во всех IDE, включая NetBeans, Eclipse и IntelliJ.

Лично я обнаружил, что запустить приложение JavaFX довольно просто, используя шаблон нового проекта, встроенный в IntelliJ. Но это только мой собственный вкус. Любая из IDE должна работать хорошо.

Я попытался установить библиотеку JavaFX в свою среду IDE NetBeans, и это сработало. Однако я не пытался напрямую добавлять JavaFX в свой проект.

Похоже, вы используете встроенный в NetBeans способ добавления библиотек в свой проект. Я предлагаю вам прекратить делать это в ближайшее время и вместо этого научиться использовать Maven или Gradle, как упоминалось выше. Эти инструменты упрощают процесс получения и установки библиотек. И, как я упоминал выше, они могут значительно помочь с более сложными сборками с такими задачами, как объединение JVM и создание AOT/собственного кода.

Кривая обучения с Maven или Gradle поначалу раздражает, но стоит потраченного времени и усилий. Многие, если не большинство, профессиональных разработчиков Java используют менеджер зависимостей и инструмент управления сборкой, такой как Maven, Gradle или один из немногих других.

Кроме того, изучение Maven или Gradle освобождает вас от чрезмерной привязанности к проприетарной системе сборки конкретной IDE. Использование одной из этих независимых систем сборки упрощает последующий переход с одной IDE на другую.


Совет: обратите особое внимание на любые сообщения JavaFX/OpenJFX на Stack Exchange, написанные Jewelsea.

Совет: Обязательно изучите более свежие материалы по JavaFX. Сосредоточьтесь на JavaFX 8 и более поздних версиях. Ранние версии претерпели драматическую эволюцию, поэтому старые материалы сейчас могут быть неактуальны.

Здравствуй Василий. Большое спасибо за хорошо объясненный ответ. Теперь я перешел на IntelliJ IDE и обнаружил, что он намного чище и проще в использовании. Однако я хотел бы спросить, когда я переношу свой код в файл JavaFX, мне нужно включать импорт JavaFX или я могу просто оставить свой код необработанным?

Abraham Agbota 18.08.2023 16:08

@AbrahamAgbota Если вы создаете новый проект с использованием шаблона JavaFX, предоставленного IntelliJ, вы найдете в верхней части файлов .java строки module и import. Вы будете делать то же самое в своих собственных файлах, которые вы добавляете в проект.

Basil Bourque 18.08.2023 17:08

Другие вопросы по теме