JavaFX允许你创建具有现代硬件加速且具有高可移植性的用户界面Java应用程序。
这里有关于JavaFX的详细参考文档,这个简短的文档是介绍如何写一个JavaFX程序。
如何在移动平台上运行JavaFX程序,请参考Gluon Mobile入门。
关于对JavaFX的长期支持的更多信息,请参考JavaFX长期支持选项。
JavaFX是基于JDK构建的一个独立的组件。开发JavaFX程序有两种不同的方式:
(1)使用JavaFX SDK(在17或21LTS,最新版本21或早期的授权)。
(2)使用构建工具(maven/gradle)去Maven中央仓库下载需要的模块。
无论如何,对于这两种方式,要求JDK版本JDK21,至少是JDK17。
下载安装JDK,选择合适版本即可,最新的版本可以在OpenJDK官方网站下载:https://jdk.java.net/21/。
安装好后,你可以在命令行使用”java”命令,检查是否以正确安装。以下显示的是OpenJDK21:
$java -version
openjdk version "21" 2023-09-19
OpenJDK Runtime Environment (build 21+35-2513)
OpenJDK 64-Bit Server VM (build 21+35-2513, mixed mode, sharing)
你需要设置JAVA_HOME环境变量,可以参考该向导进行设置。
说明:如果你的系统已安装多个JDK版本,你必须保证JAVA_HOME指向正确的JDK版本。JavaFX21需要JDK17以上。
如果你想使用JavaFX SDK代替构建工具,下载一个合适的JavaFX并解压缩。对于本教程,我们使用JavaFX21.0.1。
添加环境变量指向JavaFX SDK的lib目录,如下所示:
Linux/Mac
export PATH_TO_FX=path/to/javafx-sdk-21.0.1/lib
Windows
set PATH_TO_FX="path\to\javafx-sdk-21.0.1\lib"
你可以在命令行使用如下命令编译并运行JavaFX程序。
编译程序命令(HelloFX.java来自于sample):
Linux/Mac
javac --module-path $PATH_TO_FX --add-modules javafx.controls HelloFX.java
Windows
javac --module-path %PATH_TO_FX% --add-modules javafx.controls HelloFX.java
重要提示:确保添加所需的模块,考虑到依赖的传递性(例如,这里不需要添加javafx.graphics模块,是因为已经添加了javafx.controls模块)。但是你的程序如果用FXML,你必须添加javafx.fxml模块,如下所示:
Linux/Mac
javac --module-path $PATH_TO_FX --add-modules javafx.controls,javafx.fxml HelloFX.java
Windows
javac --module-path %PATH_TO_FX% --add-modules javafx.controls,javafx.fxml HelloFX.java
使用如下命令运行程序:
Linux/Mac
java --module-path $PATH_TO_FX --add-modules javafx.controls HelloFX
Windows
java --module-path %PATH_TO_FX% --add-modules javafx.controls HelloFX
如果你想使用Maven去开发JavaFX程序,你不用下载JavaFX SDK。你只需要在pom.xml文件中引入相关模块,构建系统会自动下载需要的模块。
这是一个pom.xml文件,展示如何实现,此文件被包含在此示例中。
或者,我们可以使用JavaFX Maven原型来快速创建Maven项目,通过执行如下命令可以创建一个简单的JavaFX项目:
mvn archetype:generate \
-DarchetypeGroupId=org.openjfx \
-DarchetypeArtifactId=javafx-archetype-simple \
-DarchetypeVersion=0.0.3 \
-DgroupId=org.openjfx \
-DartifactId=sample \
-Dversion=1.0.0 \
-Djavafx-version=11
这个pom使用JavaFX Maven plugin:
<plugins>
<plugin>
<groupId>org.openjfx</groupId>
<artifactId>javafx-maven-plugin</artifactId>
<version>0.0.1</version>
<configuration>
<mainClass>HelloFX</mainClass>
</configuration>
</plugin>
</plugins>
添加依赖:
<dependencies>
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-controls</artifactId>
<version>11</version>
</dependency>
</dependencies>
重要提示:请注意传递依赖是自动解析的(例如,这里不需要添加javafx.graphics模块,是因为已经添加了javafx.controls模块)。但是你的程序如果用FXML,你必须添加javafx.fxml模块。
最终,使用如下命令运行程序(基于参考示例中的HellFX.java):
mvn clean javafx:run
提示:确保正确设置Java_home环境变量。
和Maven相似,我们可以在build.gradle文件中定义需要的JavaFX模块。对于Gradle我们需要使用JavaFX gradle plugin:
plugins {
id 'application'
id 'org.openjfx.javafxplugin' version '0.0.5'
}
接下来我们添加所需的模块,例如,如果我们仅需要javafx.controls模块,我们将包括:
javafx {
version = "12"
modules = [ 'javafx.controls' ]
}
重要提示:请注意传递依赖是自动解析的(例如,这里不需要添加javafx.graphics模块,是因为已经添加了javafx.controls模块)。但是你的程序如果用FXML,你必须添加javafx.fxml模块。
你可以指定一个JavaFX唯一的版本。例如,你想使用JavaFX 17.0.8:
javafx {
version = "17.0.8"
modules = [ 'javafx.controls' ]
}
这是一个build.gradle文件,展示如何实现,这个文件来自于参考示例。
使用如下命令运行这个程序(例如:使用来自参考示例的HelloFX.java):
Linux/Mac
./gradlew run
Windows
gradlew run
提示:推荐jdk版本对应gradle最小版本如下: