初识JavaFx

简介

        你可以使用JavaFx创建高度可移植,现代,硬件加速的用户界面的java应用。

        这里有一片关于JavaFx的详细文档(Client Technologies: Java Platform, Standard Edition (Java SE) 8 Release 8),这篇简短教程将给你展示怎样编写一个JavaFx应用

        有关如何在移动平台运行JavaFx应用的资料,请移步Gluon Documentation

        有关JavaFx11长期支持版的资料,请移步 JavaFX Long Term Support - Gluon

        JavaFx构建在·JDK之上并且是个独立的组件。开发JavaFx应用有两种不同的选择。

                使用JavaFx SDK(JavaFX - Gluon 选择 11LTS 与最新发型的版本 15.0.1)

                使用构建系统(maven/gradle)下载需要的模块(选择和上述相同的版本)

        无论哪种选择,都需要最新版本的JDK,或者至少JDK11

安装 Java

下载适合你操作系统的JDK,最新版本的JDK可以充官方网站下载 。 OpenJDK 

一旦安装完毕,你可以在你的机器上使用java命令

检查是否安装了正确的java版本。下面是OpenJDK 15的命令行输出:


$ java -version
openjdk version "15" 2020-09-15
OpenJDK Runtime Environment (build 15+36-1562)
OpenJDK 64-Bit Server VM (build 15+36-1562, mixed mode, sharing)

你需要设置JAVA_HOME 环境变量指向JDK的安装目录。可以按照以下教程(  this guide )为你的主机设置JAVA_HOME。

注意: 如果你的系统安装有多个版本的JDK,你需要确保JAVA_HOME环境变量指向正确的JDK,JavaFX15需要至少JDK11 。

运行Hello Workd(通过SDK)  

        如果你想用JavaFx SDK 替换构建工具来开发应用,得下载合适的JavaFx 运行时,并解压到

期望的目录,对于本教程,我们将会采用JavaFx15.0.1

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

#window
set PATH_TO_FX="path\to\javafx-sdk-15.0.1\lib"

        这会儿可以在命令行编译运行JavaFx应用了

        先编译:

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

 重点:确保添加了必须的模块,传递依赖是自动解析的(例如,无序添加javafx.graphics模块,因为它是javafx.controls模块的传递依赖)。如果你的应用使用了FXML,你需要添加javafx.fxml模块,如下所示:

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

最后,运行程序:

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

运行Hello Workd(通过maven) 

        如果你是通过maven开发JavaFx应用,则不必下载JavaFx SDK。只需要在pom.xml文件中指定依赖模块和版本,构建系统会自动下载需要的模块,包括适用于你开发平台的本地包。

        示例的pom文件如下。

        关联的示例项目地址:示例程序

<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>org.openjfx</groupId>
  <artifactId>hellofx</artifactId>
  <packaging>jar</packaging>
  <version>1.0-SNAPSHOT</version>
  <name>demo</name>
  <url>http://maven.apache.org</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <javafx.version>17.0.1</javafx.version>
    <javafx.maven.plugin.version>0.0.8</javafx.maven.plugin.version>
  </properties>

  <dependencies>
    <dependency>
      <groupId>org.openjfx</groupId>
      <artifactId>javafx-controls</artifactId>
      <version>${javafx.version}</version>
    </dependency>
  </dependencies>
  
  <build>
    <plugins>
      <plugin>
        <groupId>org.openjfx</groupId>
        <artifactId>javafx-maven-plugin</artifactId>
        <version>${javafx.maven.plugin.version}</version>
        <configuration>
          <mainClass>HelloFX</mainClass>
        </configuration>
      </plugin>
    </plugins>
  </build>
  
</project>

或者,可以通过JavaFx Maven Archetypes 快速创建项目。简单的项目可以通过下面的命令创建。

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=15.0.1

JavaFx Maven构建插件


<plugins>
    <plugin>
        <groupId>org.openjfx</groupId>
        <artifactId>javafx-maven-plugin</artifactId>
        <version>0.0.5</version>
        <configuration>
            <mainClass>HelloFX</mainClass>
        </configuration>
    </plugin>
</plugins>

添加maven依赖

<dependencies>
  <dependency>
    <groupId>org.openjfx</groupId>
    <artifactId>javafx-controls</artifactId>
    <version>15.0.1</version>
  </dependency>
</dependencies>

重要:传递性依赖是自动解析的 (例如,无序添加javafx.graphics模块,因为它是javafx.controls模块的传递依赖)。如果你的应用使用了FXML,你需要添加javafx.fxml模块

最后,运行程序

mvn clean javafx:run

附:HelloFx.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 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();
    }

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值