JavaFX 模式窗体

JavaFX 是用于创建富客户端应用程序的平台,它提供了丰富的图形界面库和丰富的控件。模式窗体是一种常见的应用程序界面设计模式,它在显示期间阻止用户与其他窗口进行交互。本文将介绍如何在 JavaFX 中创建模式窗体,并提供一个简单的代码示例。

概述

模式窗体通常用于显示对话框、警告框和确认框等应用程序窗口。它们是非模态窗口的一种特殊类型,当模式窗体显示时,用户不能与其他窗口进行交互,直到模式窗体关闭。

JavaFX 提供了 Stage 类来创建和管理窗口。要创建一个模式窗体,我们需要创建一个新的 Stage 对象,并设置其 initModality 属性为 Modality.APPLICATION_MODAL。此外,我们还需要为模式窗体设置一个所有者窗口,以便它与其他窗口进行关联。

创建模式窗体

让我们看一个简单的例子,创建一个基本的模式窗体。在这个例子中,我们将创建一个按钮,当点击按钮时,将显示一个模式窗体。

import javafx.application.Application;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.layout.VBox;
import javafx.stage.Modality;
import javafx.stage.Stage;

public class ModalWindowExample extends Application {

    @Override
    public void start(Stage primaryStage) {
        Button openButton = new Button("打开模式窗体");
        openButton.setOnAction(e -> {
            Stage modalStage = new Stage();
            modalStage.initModality(Modality.APPLICATION_MODAL);
            modalStage.initOwner(primaryStage);

            Label label = new Label("这是一个模式窗体");
            Button closeButton = new Button("关闭");
            closeButton.setOnAction(event -> modalStage.close());

            VBox vbox = new VBox(10);
            vbox.setAlignment(Pos.CENTER);
            vbox.getChildren().addAll(label, closeButton);

            Scene modalScene = new Scene(vbox, 200, 100);
            modalStage.setScene(modalScene);
            modalStage.showAndWait();
        });

        VBox vbox = new VBox(10);
        vbox.setAlignment(Pos.CENTER);
        vbox.getChildren().add(openButton);

        Scene scene = new Scene(vbox, 200, 200);
        primaryStage.setScene(scene);
        primaryStage.show();
    }

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

在上面的代码中,我们首先创建了一个按钮 openButton,当点击按钮时,将创建一个新的 Stage 对象 modalStage。然后,我们设置 modalStageinitModality 属性为 Modality.APPLICATION_MODAL,以创建一个模式窗体。接下来,我们为 modalStage 设置一个所有者窗口 primaryStage。然后,我们创建一个标签和一个关闭按钮,并将它们添加到一个垂直布局 VBox 中。最后,我们创建一个新的场景 modalScene,将 VBox 设置为根节点,并将场景设置为 modalStage 的场景。最后,我们调用 modalStage.showAndWait() 来显示模式窗体,并等待其关闭。

总结

模式窗体是一种常见的应用程序界面设计模式,用于显示对话框、警告框和确认框等窗口。在 JavaFX 中,我们可以使用 Stage 类来创建和管理窗口,并通过设置 initModality 属性为 Modality.APPLICATION_MODAL 来创建模式窗体。同时,我们还需要设置一个所有者窗口,以便与其他窗口进行关联。

在本文中,我们提供了一个简单的 JavaFX 代码示例,演示了如何创建一个模式窗体。通过这个示例,你可以了解如何在 JavaFX 中创建和使用模式窗体。

关系图

erDiagram
    Stage --|> Window
    Window --|> Node

旅行图

journey
    title 创建模式窗体
    section 创建按钮
    section 打开模式窗体
    section 关闭模式窗体
    section 显示模式窗体