JavaFX 是 Java 平台上用于构建富客户端应用程序的图形用户界面(GUI)工具包。以下是一个简单的 JavaFX 教程,介绍了基本的 JavaFX 概念和用法。

1. 安装 JavaFX:

从 Java 11 开始,JavaFX 不再捆绑在 JDK 中。你可以选择使用 OpenJFX,它是 OpenJDK 的一部分。你可以从 [OpenJFX 官方网站](https://openjfx.io/) 下载并安装。

2. 使用 Scene Builder:

[Scene Builder](https://gluonhq.com/products/scene-builder/) 是一个可视化工具,用于设计 JavaFX 用户界面。你可以使用 Scene Builder 来创建 UI,然后通过 Java 代码与之交互。

3. 创建一个简单的 JavaFX 应用程序:

3.1 创建项目:

使用你喜欢的 IDE(如 IntelliJ IDEA、Eclipse)创建一个新的 Java 项目,并将 OpenJFX 库添加到项目中。

3.2 创建主类:
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.stage.Stage;

public class HelloWorldApp extends Application {
    public static void main(String[] args) {
        launch(args);
    }

    @Override
    public void start(Stage primaryStage) {
        // 创建一个标签
        Label label = new Label("Hello, JavaFX!");

        // 创建一个场景
        Scene scene = new Scene(label, 300, 200);

        // 设置主舞台的标题和场景
        primaryStage.setTitle("JavaFX Hello World");
        primaryStage.setScene(scene);

        // 显示主舞台
        primaryStage.show();
    }
}

3.3 运行应用程序:

在 main 方法中调用 launch(args) 启动 JavaFX 应用程序。这将调用 start 方法,其中创建了主舞台、场景和标签。

4. 与 Scene Builder 集成:

你可以使用 Scene Builder 设计用户界面,然后在 Java 代码中加载和处理它。

4.1 在 Scene Builder 中创建 UI:

使用 Scene Builder 创建你的用户界面,保存 .fxml 文件。

4.2 加载 UI 文件:
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;

public class FxmlExample extends Application {
    public static void main(String[] args) {
        launch(args);
    }

    @Override
    public void start(Stage primaryStage) throws Exception {
        // 加载 FXML 文件
        Parent root = FXMLLoader.load(getClass().getResource("sample.fxml"));

        // 创建一个场景
        Scene scene = new Scene(root, 300, 200);

        // 设置主舞台的标题和场景
        primaryStage.setTitle("FXML Example");
        primaryStage.setScene(scene);

        // 显示主舞台
        primaryStage.show();
    }
}

5. 事件处理:

JavaFX 提供了丰富的事件处理机制,允许你响应用户界面上的事件。
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;

public class EventHandlingExample extends Application {
    public static void main(String[] args) {
        launch(args);
    }

    @Override
    public void start(Stage primaryStage) {
        Button button = new Button("Click me");

        // 注册事件处理程序
        button.setOnAction(e -> {
            System.out.println("Button clicked!");
        });

        StackPane root = new StackPane();
        root.getChildren().add(button);

        Scene scene = new Scene(root, 300, 200);

        primaryStage.setTitle("Event Handling Example");
        primaryStage.setScene(scene);
        primaryStage.show();
    }
}

6. 布局管理:

JavaFX 提供了多种布局管理器,用于灵活地排列和组织用户界面元素。
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.HBox;
import javafx.stage.Stage;

public class LayoutExample extends Application {
    public static void main(String[] args) {
        launch(args);
    }

    @Override
    public void start(Stage primaryStage) {
        Button button1 = new Button("Button 1");
        Button button2 = new Button("Button 2");
        Button button3 = new Button("Button 3");

        // 使用 HBox 布局
        HBox hbox = new HBox(10); // 间距为 10
        hbox.getChildren().addAll(button1, button2, button3);

        Scene scene = new Scene(hbox, 300, 200);

        primaryStage.setTitle("Layout Example");
        primaryStage.setScene(scene);
        primaryStage.show();
    }
}

以上是一个简单的 JavaFX 教程,涵盖了基本的概念和用法。JavaFX 提供了丰富的图形库和工具,使得构建现代、交互式的用户界面变得更加容易。


转载请注明出处:http://www.pingtaimeng.com/article/detail/462/Java