DialogPane對話方塊佈局

Jks&發表於2024-06-22

JavaFX 的 DialogPane 是一個用於建立對話方塊的控制元件,它是 Dialog 類內容部分的根節點。DialogPane 提供了一個靈活的方式來自定義對話方塊的內容和行為。

以下是 DialogPane 的一些基本用法:

  1. 建構函式DialogPane 可以透過多種建構函式建立,可以指定標題、頭部、內容和擴充套件按鈕。

  2. 標題和頭部:使用 setTitlesetHeaderText 方法來設定對話方塊的標題和頭部文字。

  3. 內容設定:使用 setContent 方法來設定對話方塊的主要內容。

  4. 按鈕:使用 getButtonTypesbuttonTypesProperty 來新增或設定對話方塊的按鈕型別。

  5. 結果:使用 Dialog 類的 showAndWait 方法來顯示對話方塊,並等待使用者操作。使用者操作的結果可以透過 Dialog 類的 getResult 方法獲取。

  6. 事件處理:可以為按鈕新增事件處理程式來響應使用者的點選事件。

下面是一個 DialogPane 的使用案例,演示瞭如何使用 DialogPane 來建立一個簡單的確認對話方塊:

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

public class DialogPaneDemo extends Application {

    @Override
    public void start(Stage primaryStage) {
        // 建立 DialogPane 例項
        DialogPane dialogPane = new DialogPane();

        // 設定標題和頭部文字
        dialogPane.setHeaderText("Confirm Action");
        dialogPane.setContentText("Are you sure you want to proceed?");

        // 建立確認和取消按鈕
        ButtonType confirmButtonType = new ButtonType("Confirm", ButtonBar.ButtonData.OK_DONE);
        ButtonType cancelButtonType = new ButtonType("Cancel", ButtonBar.ButtonData.CANCEL_CLOSE);
        dialogPane.getButtonTypes().addAll(confirmButtonType, cancelButtonType);

        // 設定對話方塊的按鈕
        dialogPane.lookupButton(confirmButtonType).addEventFilter(ActionEvent.ACTION, event -> {
            System.out.println("Confirmed");
        });
        dialogPane.lookupButton(cancelButtonType).addEventFilter(ActionEvent.ACTION, event -> {
            System.out.println("Cancelled");
        });

        // 建立一個垂直佈局的皮膚作為對話方塊的內容
        VBox vbox = new VBox(10); // 間距為10
        dialogPane.setContent(vbox);

        // 建立一個 Dialog 例項並設定 DialogPane
        Scene scene = new Scene(dialogPane, 300, 200);
        Dialog<ButtonType> dialog = new Dialog<>();
        dialog.getDialogPane().setContent(dialogPane);
        dialog.initOwner(primaryStage);
        dialog.initModality(Modality.APPLICATION_MODAL);

        // 顯示對話方塊
        dialog.showAndWait().ifPresent(result -> {
            if (result == confirmButtonType) {
                System.out.println("User clicked confirm.");
            } else {
                System.out.println("User clicked cancel.");
            }
        });
    }

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

在這個例子中,我們建立了一個 DialogPane 並設定了標題和頭部文字。然後,我們新增了兩個按鈕型別(確認和取消)到對話方塊,併為這些按鈕設定了事件處理程式。我們還建立了一個 VBox 作為對話方塊的內容,並將其設定到 DialogPane 中。

接著,我們建立了一個 Dialog 例項,並將 DialogPane 設定為對話方塊的內容。我們設定了對話方塊的所有者和模態性,然後呼叫 showAndWait 方法來顯示對話方塊,並等待使用者操作。

執行這個程式,你會看到一個確認對話方塊,使用者可以選擇確認或取消操作。根據使用者的選擇,控制檯將列印相應的訊息。

相關文章