提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
翻译|使用教程|编辑:鲍佳佳|2021-01-25 10:34:08.080|阅读 317 次
概述:在过去的六年里,我一直在我的一些演示应用程序中使用JavaFX,我了解到的一件事是,它是一个移动的目标,特别是在Java 11中JavaFX被从JDK中移除之后。我想知道的是,目前创建一个新的JavaFX应用程序的最佳方法是什么,以及如何从IntelliJ IDEA内部运行它?
# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>
在过去的六年里,我一直在我的一些演示应用程序中使用JavaFX,我了解到的一件事是,它是一个移动的目标,特别是在Java 11中JavaFX被从JDK中移除之后。我想知道的是,目前创建一个新的JavaFX应用程序的最佳方法是什么,以及如何从IntelliJ IDEA内部运行它?
构建工具和JavaFX
JavaFX并不像你在应用中可能使用的其他库那样简单依赖。我们不能在Maven或Gradle文件中添加一个新的依赖关系,然后直接开始使用它,这主要是因为UI框架比其他类型的框架更依赖于你的操作系统。这主要是因为UI框架比其他类型的框架更依赖于你的操作系统,所以构建工具需要为你的操作系统引入正确的依赖关系。
在我的JavaFX应用中使用过Maven和Gradle,我看到了这两种工具所采取的方法。由于这两个构建工具都很流行,所以我想把它们都介绍一下。
使用Java模块系统
如果你想要与IntelliJ IDEA、JavaFX和Gradle一起工作的无缝体验,并且你可以自由地做出所有的架构决策,可以尝试使用Java的模块系统(在Java 9中引入)创建一个模块化的应用程序。对像我们在这里编写的演示应用这样的小应用来说,唯一真正影响的是一个额外的文件,模块-info.java。
在使用模块时有很多微妙的地方,我在这个例子中不会涉及。最主要的是,你需要注意的是,模块化应用使用的是模块路径,而不是我们熟知和喜爱的classpath。
OpenJFX入门文档介绍了如何创建这样的应用程序(按照菜单项 "JavaFX和IntelliJ"->"Gradle模块化")。
然而,如果你使用的是Gradle 6.7或以上版本(如果你从IntelliJ IDEA 2020.3创建了一个Gradle应用程序,就会是这样),JavaFX Gradle Plugin(0.0.9版本)就不能做所需的事情,因为Gradle改变了它构建使用Java模块系统的应用程序的方式。你需要把你的build.gradle文件改成类似的样子。
plugins { id 'application' } group 'com.example' version '1.0-SNAPSHOT' repositories { mavenCentral() } def javaFXPlatform = getJavaFXPlatform() def javaFXVersion = "15.0.1" dependencies { // you need a dependency for each of the JavaFX modules you're going to use implementation "org.openjfx:javafx-base:${javaFXVersion}:${javaFXPlatform}" implementation "org.openjfx:javafx-controls:${javaFXVersion}:${javaFXPlatform}" implementation "org.openjfx:javafx-graphics:${javaFXVersion}:${javaFXPlatform}" } application { //Java Module System module name mainModule.set('com.example.javafxgradle') //Your JavaFX application class mainClass.set('com.example.javafxgradle.HelloFX') } java { // this enables Java Modularity in Gradle (version 6.7 and above) modularity.inferModulePath.set(true) } // Based on this StackOverflow answer: //stackoverflow.com/a/65209664/653519 private static String getJavaFXPlatform() { def currentOS = org.gradle.nativeplatform.platform.internal.DefaultNativePlatform.currentOperatingSystem; if (currentOS.isWindows()) { return 'win' } else if (currentOS.isLinux()) { return 'linux' } else if (currentOS.isMacOsX()) { return 'mac' } return null }
该应用程序从命令行(或IntelliJ IDEA终端窗口)运行,并具有:
/.gradlew run(您将需要JAVA_HOME至少指向JDK 11的a)
它通过application -> run任务从Gradle工具窗口运行
我们可以从HelloFX.java文件中运行它,可以从装订线中的绿色箭头,也可以通过⌃⇧R(MacOS)或Ctrl + Shift + F10(Windows)运行它。
我使用Java 15作为项目SDK。但是,它也应与JDK 11或更高版本一起运行。
如果您不熟悉Java模块系统,则可能不想在JavaFX应用程序中使用它。如果是这种情况,请继续阅读,因为您需要了解一些注意事项和解决方法。
没有模块
。
最简单的Gradle方法应该是在没有Java模块系统的情况下使用Gradle。
按照OpenJFX入门文档中的步骤(导航到 "JavaFX和IntelliJ IDEA "下的 "Non-modular with Gradle "的链接),或者克隆/下载示例应用程序代码。请注意,如果你没有使用Java模块系统,JavaFX Gradle插件会做所有你需要的事情,不管你使用的Gradle版本如何,所以你的build.gradle文件比上面显示的版本更简单。
与模块化版本一样,您可以使用以下命令从命令行运行此JavaFX应用程序:
/.gradlew run或者您可以run通过Gradle工具窗口运行任务,如上所示。或者,您可以使用“执行任何操作”(Ctrl Ctrl)并输入gradle run。
注意
请注意,如果HelloFX.java从IntelliJ IDEA编辑器内部运行文件,则该文件可能不起作用。
这不是一个大问题,因为您仍然可以使用其他方法,并且通过IntelliJ IDEA运行Gradle命令仍会将其添加为有效的运行配置。
JavaFX与Maven
获得使用Maven的JavaFX应用程序的最简单方法是JavaFX Maven Archetype。使用OpenJFX入门文档,按照 "JavaFX和IntelliJ"->"Modular with Maven"(或 "Non-modular with Maven",在写这篇文章的时候,这两种方法的结果似乎是一样的)下的说明进行操作。
使用原型的好处是,所有的基本代码都会为你生成,你什么都不用做。你应该最终得到一个像我的javafx-maven-via-archetype代码这样的项目。
生成的应用程序使用了Java 9中引入的Java模块系统,这对于一个简单的应用程序来说应该是没有问题的,但值得注意的是,万一你遇到任何意外的行为。
该应用程序从命令行(或IntelliJ IDEA终端窗口)运行,并具有:
(假设你已经安装了Maven)
你也可以从App.java的水沟里的绿色箭头处运行它。
如果你想运行我的示例应用程序,你需要使用Java 15,我在Maven中特别设置了它为JDK。
注意
通过Maven的工具窗口运行可能会失效。
如果你的操作系统的JAVA_HOME低于Java 15(例如,我的系统设置为Java 11),你在工具窗口中运行javafx:run会出现错误。
没有模块
并非每个人都希望或需要在其应用程序中使用Java模块系统(尽管我建议人们尝试一下)。在这种情况下,您可以继续按照上述步骤创建应用程序,但是删除module-info.java文件。在中pom.xml,从中删除模块名称mainClass。例如,更改此:
对此:
注意:
如果你使用no-modules的方法,你仍然可以像以前一样从命令行运行应用程序,但你将无法通过编辑器运行它,也就是说,你既无法从水沟中的绿色箭头运行App.java,也无法通过⌃⇧R(MacOS)或Ctrl+Shift+F10(Windows)运行App.java。
Maven 注释:
IntelliJ IDEA Reactive Spring Boot教程,其中有一个JavaFX前端,使用Maven。我已经将它升级为使用Java 15和JavaFX 15.0.1,它没有使用Java模块化,似乎可以正常工作--无论是从命令行运行还是从IntelliJ IDEA运行UI应用类。
我还没有弄清楚这是为什么,我的假设是由于Spring照顾了很多的依赖关系。随意翻翻代码吧。
总结:
创建JavaFX应用程序就像使用任何其他框架一样--了解如何开始,以及各种方法的优缺点是什么,是成功的关键。在过去五年左右的时间里,JavaFX经历了激动人心的时刻,很高兴看到我们可以在前端以及应用程序的后端使用Java。
如果你的应用程序使用的是JavaFX前端,如果在你选择的构建工具中配置正确,你可以在IntelliJ IDEA中构建和运行它。
好了这就是今天的内容了,如果今天的文章未解决你的需求,可点击获取更多免费教程。不要忘了在评论与我们分享您的想法和建议,慧都作为IntelliJ IDEA正版合作商,我们推出"软件国产化服务季"活动(点击查看详情)!现IntelliJ正版授权在线订购最高立减3000元!低至1333!还有多种授权方式供你选择。
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@pclwef.cn
文章转载自:本文探讨 SQL Server 中 NULL 和空值之间的区别,并讨论如何有效地处理它们。
Unity 是一款功能极其丰富的游戏引擎,允许开发人员将各种媒体集成到他们的项目中。但是,它缺少最令人兴奋的功能之一 - 将 Web 内容(例如 HTML、CSS 和 JavaScript)直接渲染到 3D 场景中的纹理上的能力。在本文中,我们将介绍如何使用 DotNetBrowser 在 Unity3D 中将 Web 内容渲染为纹理。
DevExpress v24.2帮助文档正式发布上线了,请按版本按需下载~
本教程将向您展示如何用MyEclipse构建一个Web项目,欢迎下载最新版IDE体验!
IntelliJ在业界被公认为优秀的Java开发平台之一,在智能代码助手、代码自动提示、重构、J2EE支持、Ant、JUnit、CVS整合、代码审查、 创新的GUI设计等方面表现突出,并支持基于Android平台的程序开发。
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@pclwef.cn
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢