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
。然后,我们设置 modalStage
的 initModality
属性为 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 显示模式窗体