HyperQing 2021-03-22
本文内容主要翻译自:https://openjfx.io/openjfx-docs/#IDE-Intellij 本文翻译的部分为原文非模块化项目的Gradle部分。 原生方法创建JavaFX项目见:https://www.yuque.com/go/doc/33340156
1. 创建Gradle项目
创建一个JAVA语言的Gradle项目。
输入项目名称,例如:HelloFX,并指定项目路径。与此同时可以输入 groupId,例如org.openjfx
,以及 artifactId 例如:hellofx。当项目打开后,添加一个包叫org.openjfx
和一个空的MainApp
类。
2. 修改build文件
编辑build.gradle
文件,用以下build文件内容进行替换,根据org.openjfx.MainApp
类名来设置mainClassName
。(具体需要按照你的实际版本来进行修改,例如javafx的版本,镜像的源等)
https://gitee.com/openjfx/samples/blob/master/IDE/IntelliJ/Non-Modular/Gradle/hellofx/build.gradle
plugins {
id 'application'
id 'org.openjfx.javafxplugin' version '0.0.8'
}
repositories {
mavenCentral()
}
dependencies {
}
javafx {
version = "13"
modules = [ 'javafx.controls', 'javafx.fxml' ]
}
mainClassName = 'org.openjfx.MainApp'
附:镜像可以使用以下代替。
repositories {
jcenter()
}
与Maven相似的是,我们能够在build.gradle
文件中声明我们需要的JavaFX模块。然而,对于Gradle,我们需要应用JavaFX gradle插件,如下所示。
javafx {
version = "15.0.1"
modules = [ 'javafx.controls', 'javafx.fxml' ]
}
补充一个作者自己使用的示例build.gradle
文件
plugins {
id 'application'
id 'org.openjfx.javafxplugin' version '0.0.9'
}
group 'org.openjfx'
version '1.0-SNAPSHOT'
repositories {
jcenter()
}
dependencies {
testImplementation 'org.junit.jupiter:junit-jupiter-api:5.7.1'
testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine'
}
test {
useJUnitPlatform()
}
javafx {
version = "16"
modules = [ 'javafx.controls', 'javafx.fxml' ]
}
mainClassName = 'org.openjfx.MainApp'
让IDE同步项目的Gradle配置后,IDE会自动下载所需的依赖。
对于所有其他的Gradle依赖,他们的jar包都可以在本地的.local
目录中找到。
:::tips
注:如果JAVA_HOME没有设置为JAVA 11或更新的版本,插件将会无法工作。为了避免这个问题,请确保Gradle JVM设置为正确的JDK。
:::
**
3. 添加代码
在MainApp类的基础上,添加这些内容到项目的的main类中。然后添加contrller控制器和FXML文件、css文件。IDE会自动识别JavaFX相关的类。
由于官方教程给出的示例代码中,getResource("scene.fxml")
会提示路径不存在,后来查明是需要在路径前面添加斜杠,故下面提供一个修正后可用MainApp
类示例代码。
package org.openjfx;
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;
public class MainApp extends Application {
@Override
public void start(Stage primaryStage) throws Exception {
Parent root = FXMLLoader.load(getClass().getResource("/scene.fxml"));
Scene scene = new Scene(root);
scene.getStylesheets().add(getClass().getResource("/styles.css").toExternalForm());
primaryStage.setTitle("JavaFX and Gradle");
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
4. 运行项目
你可以打开Gradle窗口并点击hellofx -> Tasks -> build -> build
来构建项目,然后通过hellofx -> Tasks -> application -> run
来运行项目
你也可以通过终端来启动项目:
gradlew run # windows
./gradlew run # Linux/Mac
作者启动遇到的问题排查
https://my.oschina.net/tridays/blog/2222909
参考文献: https://openjfx.io/openjfx-docs/#IDE-Intellij https://my.oschina.net/tridays/blog/2222909