下载和设置 JavaFX

JavaFX 是一个开源的下一代客户端应用程序平台,适用于桌面、移动和嵌入式系统,基于 Java 构建。它提供了一个 API,用于设计在 Java 支持的每个设备上运行的 GUI 应用程序。

本教程将指导您完成在您的操作系统上安装 JavaFX 的过程。

 

下载 JavaFX

JavaFX 是一个独立组件,建立在 Java 开发工具包之上。因此,您应该考虑安装一个与您计划使用的 JavaFX 版本兼容的 Java 开发工具包 (JDK),例如,JavaFX 21 需要先安装 JDK 21。您可以按照 设置 Java 开发工具包 部分的 Java 入门 教程了解如何安装 JDK。

有一个一站式页面始终引用最新版本的 JavaFX 和 JDK:https://jdk.java.net/。选择最新的“可使用”JavaFX 版本将带您进入一个页面,您可以在其中下载所需的 JDK 版本。从该页面,您可以选择使用 JavaFX 的方式

  • 将 JavaFX 用作 SDK 来编译和运行 JavaFX 应用程序。
  • 下载包含一系列 jmod 文件的存档,并将这些文件与 jlink 一起使用以创建包含 JavaFX 模块(以及可选的模块化应用程序)的 JDK。

您应该根据您的操作系统下载 JavaFX

  • Linux/x64
  • macOS/x64
  • macOS/AArch64
  • Windows/x64

此页面提供生产就绪的 JavaFX 开源版本,根据 GNU 通用公共许可证版本 2,附带类路径例外。

 

为 Windows/x64 设置 JavaFX SDK

如果您选择使用 JavaFX SDK for Windows/x64,请将其下载并解压缩到所需位置。在本节中,您将使用 JavaFX 21.0.1。

添加一个指向运行时 lib 目录的环境变量

set PATH_TO_FX="path\to\javafx-sdk-21.0.1\lib"

现在,您可以使用 JavaFX 运行时从命令行编译和运行 JavaFX 应用程序。让我们通过编写一个简单的 HelloWorldFX.java 类来测试它

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;

public class HelloWorldFX 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 World running on JavaFX " + javafxVersion + " on top of Java " + javaVersion + ".");
        Scene scene = new Scene(new StackPane(l), 640, 480);
        stage.setScene(scene);
        stage.show();
    }

    public static void main(String[] args) {
        launch();
    }

}

首先,您将使用以下命令进行编译

javac --module-path %PATH_TO_FX% --add-modules javafx.controls HelloWorldFX.java

在编译应用程序时,您需要添加所需的模块(javafx.controls)。所需的模块(javafx.controls)解析了传递依赖的模块(javafx.graphics)的依赖关系。如果您的应用程序通过 FXML 声明组件,您还应该添加 javafx.fxml 模块

javac --module-path %PATH_TO_FX% --add-modules javafx.controls,javafx.fxml HelloWorldFX.java

现在,使用以下命令运行应用程序

java --module-path %PATH_TO_FX% --add-modules javafx.controls HelloWorlFX

 

为 Linux/x64 设置 JavaFX SDK

如果您选择使用 JavaFX SDK for Linux/x64,请将其下载并解压缩到所需位置。在本节中,您将使用 JavaFX 21.0.1。

添加一个指向运行时 lib 目录的环境变量

export PATH_TO_FX=path/to/javafx-sdk-21.0.1/lib

现在,您可以使用 JavaFX 运行时从命令行编译和运行 JavaFX 应用程序。让我们通过编写一个简单的 HelloWorldFX.java 类来测试它

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;

public class HelloWorldFX 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 World running on JavaFX " + javafxVersion + " on top of Java " + javaVersion + ".");
        Scene scene = new Scene(new StackPane(l), 640, 480);
        stage.setScene(scene);
        stage.show();
    }

    public static void main(String[] args) {
        launch();
    }

}

首先,您将使用以下命令进行编译

javac --module-path $PATH_TO_FX --add-modules javafx.controls HelloWorldFX.java

在编译应用程序时,您需要添加所需的模块(javafx.controls)。所需的模块(javafx.controls)解析了传递依赖的模块(javafx.graphics)的依赖关系。如果您的应用程序通过 FXML 声明组件,您还应该添加 javafx.fxml 模块

javac --module-path $PATH_TO_FX --add-modules javafx.controls,javafx.fxml HelloWorldFX.java

现在,使用以下命令运行应用程序

java --module-path $PATH_TO_FX --add-modules javafx.controls HelloWorlFX

 

为 macOS 设置 JavaFX SDK

如果您选择使用 JavaFX SDK for macOS,请将其下载并解压缩到所需位置。在本节中,您将使用 JavaFX 21.0.1。

添加一个指向运行时 lib 目录的环境变量

export PATH_TO_FX=path/to/javafx-sdk-21.0.1/lib

现在,您可以使用 JavaFX 运行时从命令行编译和运行 JavaFX 应用程序。让我们通过编写一个简单的 HelloWorldFX.java 类来测试它

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;

public class HelloWorldFX 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 World running on JavaFX " + javafxVersion + " on top of Java " + javaVersion + ".");
        Scene scene = new Scene(new StackPane(l), 640, 480);
        stage.setScene(scene);
        stage.show();
    }

    public static void main(String[] args) {
        launch();
    }

}

首先,您将使用以下命令进行编译

javac --module-path $PATH_TO_FX --add-modules javafx.controls HelloWorldFX.java

在编译应用程序时,您需要添加所需的模块(javafx.controls)。所需的模块(javafx.controls)解析了传递依赖的模块(javafx.graphics)的依赖关系。如果您的应用程序通过 FXML 声明组件,您还应该添加 javafx.fxml 模块

javac --module-path $PATH_TO_FX --add-modules javafx.controls,javafx.fxml HelloWorldFX.java

现在,使用以下命令运行应用程序

java --module-path $PATH_TO_FX --add-modules javafx.controls HelloWorlFX

 

使用 JavaFX 运行时映像

您也可以使用 JavaFX 发布页面中提供的 jmod 文件集运行您的 JavaFX 应用程序。首先下载适合您操作系统的存档

  • Linux/x64
  • macOS/x64
  • macOS/AArch64
  • Windows/x64

如果您的操作系统是 Linux/x64 或 macOS,请解压缩下载的存档并添加指向生成的 jmods 目录的环境变量

export PATH_TO_FX_JMODS=path/to/javafx-jmods-21.0.1

如果您是 Windows 操作系统用户,请解压缩下载的存档并添加指向生成的 jmods 目录的环境变量

set PATH_TO_FX_JMODS="path\to\javafx-jmods-21.0.1"

要使用 jmod 文件集,我们需要使 HelloWorldFX.java 应用程序成为模块的一部分。首先,您需要在类中添加包声明

package helloworld;

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;

public class HelloWorldFX 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 World running on JavaFX " + javafxVersion + " on top of Java " + javaVersion + ".");
    Scene scene = new Scene(new StackPane(l), 640, 480);
    stage.setScene(scene);
    stage.show();
  }

  public static void main(String[] args) {
    launch();
  }

}

其次,您必须创建一个 module-info.java,在其中声明运行应用程序所需的模块

module helloworldfx {
    requires javafx.controls;
    exports helloworld;
}

接下来,您可以使用 JavaFX jmod 文件编译 HelloWorldFX.java 应用程序

  • 对于 Linux/x64、macOS/x64、macOS/AArch64
     javac --module-path $PATH_TO_FX_MODS -d mods/helloworldfx $(find . -name "*.java")
    
  • 对于 Windows
    dir /s /b *.java > sources.txt & javac --module-path %PATH_TO_FX_JMODS% -d mods/helloworldfx @sources.txt & del sources.txt
    

因为 helloworldfx 是一个模块化项目,所以您可以使用 jlink 使用 JavaFX jmods 创建自定义运行时映像

  • 在 Linux/x64、macOS/x64、macOS/AArch64 上
     $JAVA_HOME/bin/jlink --module-path $PATH_TO_FX_MODS:mods --add-modules helloworldfx --output helloworldfx
    
  • 在 Windows 上
    jlink --module-path "%PATH_TO_FX_JMODS%;mods" --add-modules helloworldfx --output helloworldfx
    

映像构建完成后,您可以使用以下命令运行它

  • 在 Linux/x64、macOS/x64、macOS/AArch64 上
    helloworldfx/bin/java -m helloworldfx/helloworld.HelloWorldFX
    
  • 在 Windows 上
    helloworldfx\bin\java -m hellofx/helloworld.HelloWorldFX
    

 

最后的话

恭喜您成功下载、安装和使用 JavaFX!

如需进一步阅读,请查看 JavaFX 基础


上次更新: 2023 年 11 月 15 日