OpenJFX 03:JavaFX11指南_01-05
1. 介绍
原文位于:https://openjfx.io/openjfx-docs/#introduction
JavaFX可以用来创建高度可移植的Java应用程序,它们具有现代化的UI,并且支持硬件加速。
本教程将会帮助你创建一个JavaFX 11应用程序并且在桌面平台上运行之。如果要了解如何在移动端平台上运行JavaFX应用程序,请参考Gluon Mobile指南(Getting Started with Gluon Mobile)
JavaFX 11构建于JDK 11之上 ,并且它是一个独立的组件。开发JavaFX应用程序有两种不同的方法:
- 使用JavaFX SDK
- 使用一种构建系统(例如Maven/Gradle)来从Maven Center下载所需的组件
无论采用哪种方式,都需要安装最新版的JDK11。
2. 安装 Java 11
原文位于:https://openjfx.io/openjfx-docs/#install-java
下载与你的操作系统匹配的JDK。在本教程中我们将使用OpenJDK。安装之后你可以通过命令行来使用Java命令。通过如下命令来检查是否安装了正确版本的Java:
1 2 3 4 |
$ java -version openjdk version "11.0.2" 2018-10-16 OpenJDK Runtime Environment 18.9 (build 11.0.2+7) OpenJDK 64-Bit Server VM 18.9 (build 11.0.2+7, mixed mode) |
你需要设置JAVA_HOME环境变量并将其指向JDK 11安装文件夹。你可以根据此教程来设置与你的操作系统匹配的JAVA_HOME环境变量。
注意:如果你已经安装了与JDK 11不同版本的Java,则需要确认JAVA_HOME环境变量指向JDK 11。
3. 使用JavaFX 11来运行HelloWorld应用程序
原文位于:https://openjfx.io/openjfx-docs/#install-javafx
下载与你的操作系统匹配的JavaFX运行时并将其解压缩到合适位置。
增加指向运行时的lib文件夹的环境变量:
export PATH_TO_FX=path/to/javafx-sdk-11/lib
set PATH_TO_FX=”path\to\javafx-sdk-11\lib”
现在你可以通过命令行来使用JavaFX运行时对JavaFX 11应用程序进行编译和运行了。
根据如下内容来编译应用程序(例如本例中的HelloFX.java(见附录)):
javac –module-path $PATH_TO_FX –add-modules=javafx.controls HelloFX.java
javac –module-path %PATH_TO_FX% –add-modules=javafx.controls HelloFX.java
注意:扩展功能会需要额外的模块。例如,如果你的应用程序使用了FXML,则需要增加javafx.fxml模块,如下所示:
javac –module-path $PATH_TO_FX –add-modules=javafx.controls,javafx.fxml HelloFX.java
javac –module-path %PATH_TO_FX% –add-modules=javafx.controls,javafx.fxml HelloFX.java
确保添加了所需的模块,注意传递性依赖会被自动解析(例如,无需增加javafx.graphics模块,因为javafx.controls模块对它进行了传递性依赖)。
然后,参考下面的内容来运行应用程序:
java –module-path $PATH_TO_FX –add-modules=javafx.controls HelloFX
java –module-path %PATH_TO_FX% –add-modules=javafx.controls HelloFX
附录:HelloFX.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
import javafx.application.Application; import javafx.scene.Scene; import javafx.scene.control.Label; import javafx.scene.layout.StackPane; import javafx.stage.Stage; public class HelloFX extends Application { @Override public void start(Stage stage) { String javaVersion = System.getProperty("java.version"); String javafxVersion = System.getProperty("javafx.version"); Label l = new Label("Hello, JavaFX " + javafxVersion + ", running on Java " + javaVersion + "."); Scene scene = new Scene(new StackPane(l), 640, 480); stage.setScene(scene); stage.show(); } public static void main(String[] args) { launch(); } } |
4. 使用Maven来运行 HelloWorld
原文位于:https://openjfx.io/openjfx-docs/#maven
如果你希望使用Maven来开发JavaFX应用程序,则不需要下载JavaFX JDK。你只需要在pom.xml中指定所需的模块和对应的版本号,构建系统会下载对应的模块,包括与操作系统相关的本地库文件。
下面的pom.xml文件展示了如何来操作,它位于这个样例中。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.gluonhq</groupId> <artifactId>hellofx</artifactId> <packaging>jar</packaging> <version>1.0-SNAPSHOT</version> <name>demo</name> <url>http://maven.apache.org</url> <dependencies> <dependency> <groupId>org.openjfx</groupId> <artifactId>javafx-controls</artifactId> <version>11.0.2</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.0</version> <configuration> <release>11</release> </configuration> </plugin> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>exec-maven-plugin</artifactId> <version>1.6.0</version> <executions> <execution> <goals> <goal>java</goal> </goals> </execution> </executions> <configuration> <mainClass>HelloFX</mainClass> </configuration> </plugin> </plugins> </build> </project> |
通过如下命令来运行应用程序(例如:基于前面样例中的HelloFX.java):mvn compile exec:java
注意:确保已经将JAVA_HOME环境变量指向了JDK 11。
5. 使用Gradle来运行HelloWorld
原文位于:https://openjfx.io/openjfx-docs/#gradle
与Maven类似,我们可以在build.gradle文件中声明所需的JavaFX模块。不过,使用Gradle时我们需要增加JavaFX Gradle插件:
1 2 3 4 5 6 7 |
plugins { id 'application' id 'org.openjfx.javafxplugin' version '0.0.5' } |
我们接下来添加所需的模块。例如,如果仅需javafx.controls模块,则需要引用:
javafx { modules = [ ‘javafx.controls’ ]}
你可以指定明确的JavaFX版本。例如,如果需要指定JavaFX 11.0.1,则可以这样设置:javafx { version = “11.0.1”}
这里的 build.gradle 文件展示了如何完成任务,该文件包含在此样例中。
通过下面的命令来运行应用程序(例如使用上述样例中的HelloFX.java)
./gradlew run
gradlew run
注意:确认使用gradle 4.10以上的版本,并且设置JAVA_HOME环境变量指向JDK11。


javafx11有文档吗