⬆︎
×
TOC
CHAT

JavaFX与FXML简介

JavaFX是一个开源的下一代客户端应用平台,适用于基于Java构建的桌面、移动端和嵌入式系统。目的是为开发丰富的客户端应用提供一个现代、高效、功能齐全的工具包。

官网:openjfx.io

中文官网:openjfx.cn

教程视频:【Youtube】JavaFX tutorials by Bro Code

1 环境准备

准备环境:IDEA、JDK17、Windows、Scene Builder

从JDK 11开始,JavaFX已经从标准JDK中移除,因此需要额外下载JavaFX的SDK来引入JavaFX库,建议通过依赖管理工具(如Maven或Gradle)来完成。

Maven在pom.xml中添加以下依赖:

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

若使用非Windows平台,请添加classifierlinuxmac

<dependency>
    <groupId>org.openjfx</groupId>
    <artifactId>javafx-controls</artifactId>
    <version>23.0.1</version>
    <classifier>linux</classifier>  <!-- 或mac -->
</dependency>

Gradle在build.gradle中添加:

dependencies {
    implementation "org.openjfx:javafx-controls:23.0.1"
    implementation "org.openjfx:javafx-fxml:23.0.1"
}

2 JavaFX快速入门

详见官方文档与教程视频。

2.1 架构图

一般情况下,JavaFX应用程序包含一个或多个对应于窗口的阶段。每个阶段都有一个场景。每个场景都可以有一个控件、布局等附加到它的对象图,称为场景图。这些概念都将在后面更详细地解释。以下是JavaFX应用程序的一般结构图示:

JavaFX架构

2.2 简单使用

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

// 继承Application抽象类,重写start方法
public class Main extends Application {
    public static void main(String[] args) {
        // 入口函数里调用Application的静态方法launch,之后会自动调用start方法
        Application.launch(args);
    }

    /**
     * @param primaryStage 主窗口
     */
    @Override
    public void start(Stage primaryStage) throws Exception {
        // 设置一个场景,场景里添加一个树形组件图,先创建一个标签
        Label label = new Label("Hello JavaFx!");
        // 创建布局,将标签放入布局里,BorderPane布局把场景划分为上下左右中,默认加入的控件在中间位置
        BorderPane pane = new BorderPane(label);
        // 创建场景,将布局放入场景里,设置宽度和高度
        Scene scene = new Scene(pane, 300, 300);
        // 将场景设置到窗口里
        primaryStage.setScene(scene);
        // 设置标题
        primaryStage.setTitle("我是窗口");
        primaryStage.show();
    }
}

3 FXML

FXML是一种可编写的、基于XML的用于构造JavaFX场景图的标记语言。在FXML中,一个FXML标签代表以下类型之一:某个类的实例,某个类实例的属性,某个静态属性,一个定义代码块,一个脚本代码块;一个FXML属性表示以下类型之一:某个类实例的属性,某个静态属性,事件处理程序。

FXML

详见官网FXML参考


4 Scene Builder

Scene Builder作为一款Java拖拽式页面设计编码工具,具有强大的拖拽设计能力。

下载链接:gluonhq.com/products/scene-builder

相关教程:腾讯云 开发者社区-JavaFX之Scene Builder的使用

发表评论