如何在 Java 项目中导入 JavaFX

JavaJavaBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

本全面教程指导 Java 开发者在其 Java 项目中导入和配置 JavaFX。无论你是初学者还是有经验的程序员,都将学习到集成 JavaFX 的基本步骤,JavaFX 是一个用于在 Java 应用程序中创建丰富、交互式图形用户界面的强大框架。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL java(("Java")) -.-> java/ProgrammingTechniquesGroup(["Programming Techniques"]) java(("Java")) -.-> java/ObjectOrientedandAdvancedConceptsGroup(["Object-Oriented and Advanced Concepts"]) java/ProgrammingTechniquesGroup -.-> java/method_overloading("Method Overloading") java/ObjectOrientedandAdvancedConceptsGroup -.-> java/classes_objects("Classes/Objects") java/ObjectOrientedandAdvancedConceptsGroup -.-> java/constructors("Constructors") java/ObjectOrientedandAdvancedConceptsGroup -.-> java/modifiers("Modifiers") java/ObjectOrientedandAdvancedConceptsGroup -.-> java/packages_api("Packages / API") java/ObjectOrientedandAdvancedConceptsGroup -.-> java/user_input("User Input") java/ObjectOrientedandAdvancedConceptsGroup -.-> java/oop("OOP") subgraph Lab Skills java/method_overloading -.-> lab-421855{{"如何在 Java 项目中导入 JavaFX"}} java/classes_objects -.-> lab-421855{{"如何在 Java 项目中导入 JavaFX"}} java/constructors -.-> lab-421855{{"如何在 Java 项目中导入 JavaFX"}} java/modifiers -.-> lab-421855{{"如何在 Java 项目中导入 JavaFX"}} java/packages_api -.-> lab-421855{{"如何在 Java 项目中导入 JavaFX"}} java/user_input -.-> lab-421855{{"如何在 Java 项目中导入 JavaFX"}} java/oop -.-> lab-421855{{"如何在 Java 项目中导入 JavaFX"}} end

JavaFX 基础

什么是 JavaFX?

JavaFX 是一个现代的富客户端平台,用于使用 Java 构建跨平台的桌面、移动和 Web 应用程序。它提供了一套全面的图形和媒体包,使开发者能够创建复杂的用户界面和交互式应用程序。

JavaFX 的关键特性

JavaFX 为应用程序开发提供了几个强大的特性:

特性 描述
丰富的用户界面控件 大量预构建的用户界面组件
CSS 样式设计 允许使用 CSS 对应用程序进行样式设计
场景图 高效渲染图形元素
FXML 支持 用于定义用户界面的基于 XML 的语言
多媒体集成 内置对音频、视频和 Web 内容的支持

架构概述

graph TD A[JavaFX 应用程序] --> B[场景图] B --> C[舞台] B --> D[场景] D --> E[用户界面控件] D --> F[布局容器]

基本组件

舞台和场景

  • 舞台 表示顶级容器(窗口)
  • 场景 是 JavaFX 应用程序中所有内容的容器

简单的 JavaFX 示例应用程序

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

public class HelloFXApp extends Application {
    @Override
    public void start(Stage primaryStage) {
        Label label = new Label("Hello, JavaFX!");
        StackPane root = new StackPane();
        root.getChildren().add(label);

        Scene scene = new Scene(root, 300, 200);
        primaryStage.setTitle("LabEx JavaFX 教程");
        primaryStage.setScene(scene);
        primaryStage.show();
    }

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

何时使用 JavaFX

JavaFX 适用于:

  • 桌面应用程序开发
  • 富客户端界面
  • 数据可视化
  • 交互式多媒体应用程序
  • 跨平台 GUI 开发

优点

  1. 现代的用户界面功能
  2. 广泛的图形支持
  3. 易于与现有 Java 代码集成
  4. 跨平台兼容性
  5. 使用 FXML 进行声明式用户界面设计

通过了解这些基础知识,开发者可以开始使用 JavaFX 创建强大且视觉吸引人的应用程序。

项目配置

前提条件

在设置 JavaFX 项目之前,请确保你在 Ubuntu 22.04 上安装了以下内容:

要求 推荐版本
Java JDK 11 或更高版本
Maven 3.6+
IDE IntelliJ IDEA 或 Eclipse

配置方法

方法 1:Maven 配置

<project>
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.labex</groupId>
    <artifactId>javafx-project</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <javafx.version>17.0.2</javafx.version>
        <maven.compiler.source>11</maven.compiler.source>
        <maven.compiler.target>11</maven.compiler.target>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.openjfx</groupId>
            <artifactId>javafx-controls</artifactId>
            <version>${javafx.version}</version>
        </dependency>
        <dependency>
            <groupId>org.openjfx</groupId>
            <artifactId>javafx-fxml</artifactId>
            <version>${javafx.version}</version>
        </dependency>
    </dependencies>
</project>

方法 2:Gradle 配置

plugins {
    id 'application'
    id 'org.openjfx.javafxplugin' version '0.0.10'
}

javafx {
    version = "17.0.2"
    modules = [ 'javafx.controls', 'javafx.fxml' ]
}

项目结构

graph TD A[项目根目录] --> B[src] A --> C[pom.xml] B --> D[main] D --> E[java] D --> F[resources] E --> G[应用程序类] F --> H[FXML 文件]

命令行设置

在 Ubuntu 上安装 OpenJFX

## 更新软件包列表
sudo apt update

## 安装 OpenJDK
sudo apt install openjdk-11-jdk

## 安装 Maven
sudo apt install maven

## 验证安装
java --version
mvn --version

依赖管理

JavaFX 模块依赖

模块 用途
javafx-controls 基本用户界面控件
javafx-fxml FXML 支持
javafx-graphics 图形渲染
javafx-media 媒体播放
javafx-web Web 视图集成

构建和运行配置

Maven 构建命令

## 清理项目
mvn clean

## 编译项目
mvn compile

## 运行 JavaFX 应用程序
mvn javafx:run

IDE 集成

IntelliJ IDEA 配置

  1. 安装 “JavaFX” 插件
  2. 将 JavaFX SDK 添加到项目结构
  3. 配置模块依赖

Eclipse 配置

  1. 安装 “e(fx)clipse” 插件
  2. 配置 JavaFX 运行时库
  3. 在项目设置中设置模块路径

最佳实践

  • 使用最新稳定的 JavaFX 版本
  • 仔细管理依赖项
  • 保持模块路径简洁
  • 使用构建工具进行一致的设置

通过遵循这些配置步骤,你可以在 LabEx 开发环境中成功设置一个 JavaFX 项目。

第一个 JavaFX 应用程序

创建一个基本的 JavaFX 应用程序

项目设置

## 创建项目目录
mkdir labex-javafx-demo
cd labex-javafx-demo

## 初始化 Maven 项目
mvn archetype:generate \
  -DgroupId=com.labex \
  -DartifactId=javafx-demo \
  -DarchetypeArtifactId=maven-archetype-quickstart \
  -DinteractiveMode=false

应用程序结构

graph TD A[项目根目录] --> B[src/main/java] B --> C[主应用程序类] B --> D[控制器类] A --> E[pom.xml]

完整的 JavaFX 应用程序示例

主应用程序类

package com.labex;

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;

public class JavaFXDemoApp extends Application {
    @Override
    public void start(Stage primaryStage) {
        // 创建用户界面组件
        Button clickButton = new Button("点击我!");
        VBox root = new VBox(10);
        root.getChildren().add(clickButton);

        // 配置按钮动作
        clickButton.setOnAction(event -> {
            System.out.println("在 LabEx JavaFX 演示中按钮被点击!");
        });

        // 创建并配置场景
        Scene scene = new Scene(root, 300, 200);
        primaryStage.setTitle("LabEx JavaFX 演示");
        primaryStage.setScene(scene);
        primaryStage.show();
    }

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

用户界面组件类型

组件 描述 使用场景
按钮 可交互的点击元素 触发动作
标签 显示文本 展示信息
文本字段 用户文本输入 收集用户数据
复选框 二元选择 多项选择
组合框 下拉选择 从列表中选择

事件处理

事件类型

graph LR A[JavaFX 事件] --> B[鼠标事件] A --> C[键盘事件] A --> D[窗口事件] A --> E[动作事件]

高级事件处理

// Lambda 表达式事件处理
button.setOnMouseClicked(event -> {
    switch(event.getButton()) {
        case PRIMARY:
            System.out.println("左键点击");
            break;
        case SECONDARY:
            System.out.println("右键点击");
            break;
    }
});

为 JavaFX 应用程序设置样式

内联 CSS

button.setStyle(
    "-fx-background-color: #3498db;" +
    "-fx-text-fill: white;" +
    "-fx-font-size: 14px;"
);

Maven 依赖配置

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

运行应用程序

## 编译项目
mvn clean compile

## 运行 JavaFX 应用程序
mvn javafx:run

最佳实践

  1. 分离用户界面和逻辑
  2. 对于复杂布局使用 FXML
  3. 实现适当的事件处理
  4. 使用 CSS 进行样式设置
  5. 遵循 JavaFX 生命周期方法

通过遵循这些步骤,你可以在 LabEx 开发环境中创建你的第一个交互式 JavaFX 应用程序。

总结

通过遵循本教程,Java 开发者能够成功地将 JavaFX 导入到他们的项目中,理解项目配置技术,并创建他们的第一个 JavaFX 应用程序。本指南为使用 Java 的高级 GUI 开发框架构建现代、响应式图形界面提供了坚实的基础。