В последнее время я начал программировать игру, и для переключения сцен я хочу использовать JavaFX.
Я провел обширное исследование, чтобы выяснить, могу ли я использовать JavaFX в своем проекте, и если да, то как.
Может ли кто-нибудь дать мне некоторое представление об этом, и как я смогу этого достичь. Если включение JavaFX в мой код Java невозможно, могу ли я получить альтернативу, например, создать совершенно новый проект JavaFX и добавить свой код из моего файла Java.
Пример того, о чем я говорю:
(Action Listener) * При нажатии кнопки * {
(JavaFX принимает имя переменной текущей JPanel и переходит к другой JPanel)
}
Я попытался установить библиотеку JavaFX в свою среду IDE NetBeans, и это сработало. Однако я не пытался напрямую добавлять JavaFX в свой проект.
Я думаю, что должно произойти то, что это соответствует моему коду, поскольку JavaFX написан на java. Однако благодаря своим исследованиям я узнал, что JavaFX является модульным, поэтому, чтобы оправдать мои ожидания, мне пришлось бы создать совершенно новый проект JavaFX и импортировать в него свой код.
Я не уверен, хотя и хотел бы, чтобы внешний вклад в этом.
Поскольку вы используете Swing с JavaFX, см. руководство Oracle JavaFX Swing, которое немного устарело, но все же в основном правильно.




Ваше упоминание о JPanel наводит меня на мысль, что в настоящее время вы используете 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, настройте его и запустите с работающими компиляциями и сборками.
Предостережение… Честно говоря, позвольте мне признаться:
Очевидно, другие добились успеха, поэтому я попытаюсь снова. Когда я это сделаю, я сначала попробую явные консольные команды, показанные Кевином Рашфортом в его презентации 2023 года, JavaFX 20 и далее.
После того, как ваш новый проект, управляемый Maven/Gradle, будет запущен, перенесите код игры из старого проекта. В зависимости от вашего существующего кода этот процесс может быть довольно простым. И мудрый совет: делайте это постепенно, чтобы ваш новый проект JavaFX продолжал успешно компилироваться и работать на каждом этапе.
в среде 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 или я могу просто оставить свой код необработанным?
@AbrahamAgbota Если вы создаете новый проект с использованием шаблона JavaFX, предоставленного IntelliJ, вы найдете в верхней части файлов .java строки module и import. Вы будете делать то же самое в своих собственных файлах, которые вы добавляете в проект.
IMO, проще всего переключиться на JDK, который уже включает JavaFX (Azul Zulu JDK FX или BellSoft Liberica Full JDK). Затем вы можете написать код JavaFX в своем проекте, и он просто будет работать. Эти дистрибутивы уже включают JavaFX в систему базовых модулей. Если вы не хотите этого делать, следуйте инструкциям на openjfx.io.