javafx如何从消息框中获取返回值

javafx如何从消息框中获取返回值,javafx,return-value,messagebox,Javafx,Return Value,Messagebox,我有一个问题,我无法获得返回值,因为我想在控制器中使用它。如何在关闭窗口后从复选框中获取返回值。因为我需要控制器中的返回值。谢谢 首先,我建议您不要使用与标准库中的名称匹配的名称。“名称复选框不合适,因为它具有该名称的控件。使用一些描述性的东西,比如CheckBoxDialog 避免使用静态上下文。在这种情况下,这是不必要的,并且显示出一种糟糕的风格 这是一个保持您使用的静态方法的示例实现 public class CheckBoxDialog { public static final

我有一个问题,我无法获得返回值,因为我想在控制器中使用它。如何在关闭窗口后从复选框中获取返回值。因为我需要控制器中的返回值。谢谢


首先,我建议您不要使用与标准库中的名称匹配的名称。“名称<代码>复选框不合适,因为它具有该名称的控件。使用一些描述性的东西,比如
CheckBoxDialog

避免使用静态上下文。在这种情况下,这是不必要的,并且显示出一种糟糕的风格

这是一个保持您使用的静态方法的示例实现

public class CheckBoxDialog {
    public static final String YES = "Y";
    public static final String NO = "N";

    private String exitCode = NO;

    private Stage window;
    private Label label;

    public CheckBoxDialog() {
        createGUI();
    }

    private void createGUI() {
        window = new Stage();
        window.initModality(Modality.APPLICATION_MODAL);
        window.setMinWidth(250);

        label = new Label();

        Button yButton = new Button(YES);
        Button nbButton = new Button(NO);

        yButton.setOnAction(e -> {
            exitCode = YES;
            window.close();
        });

        nbButton.setOnAction(e -> {
            exitCode = NO;
            window.close();
        });

        VBox layout = new VBox(10);
        layout.getChildren().addAll(label,yButton, nbButton);
        layout.setAlignment(Pos.CENTER);

        Scene scene = new Scene(layout);
        window.setScene(scene);
    }

    public void setTitle(String title) {
        window.setTitle(title);
    }

    public void setMessage(String message) {
        label.setText(message);
    }

    public String showAndWait() {
        window.showAndWait();
        return exitCode;
    }

    public static String display(String title, String message){
        CheckBoxDialog dlg = new CheckBoxDialog();
        dlg.setTitle(title);
        dlg.setMessage(message);

        return dlg.showAndWait();
    }
}

首先,我建议您不要使用与标准库中的名称匹配的名称。“名称<代码>复选框不合适,因为它具有该名称的控件。使用一些描述性的东西,比如
CheckBoxDialog

避免使用静态上下文。在这种情况下,这是不必要的,并且显示出一种糟糕的风格

这是一个保持您使用的静态方法的示例实现

public class CheckBoxDialog {
    public static final String YES = "Y";
    public static final String NO = "N";

    private String exitCode = NO;

    private Stage window;
    private Label label;

    public CheckBoxDialog() {
        createGUI();
    }

    private void createGUI() {
        window = new Stage();
        window.initModality(Modality.APPLICATION_MODAL);
        window.setMinWidth(250);

        label = new Label();

        Button yButton = new Button(YES);
        Button nbButton = new Button(NO);

        yButton.setOnAction(e -> {
            exitCode = YES;
            window.close();
        });

        nbButton.setOnAction(e -> {
            exitCode = NO;
            window.close();
        });

        VBox layout = new VBox(10);
        layout.getChildren().addAll(label,yButton, nbButton);
        layout.setAlignment(Pos.CENTER);

        Scene scene = new Scene(layout);
        window.setScene(scene);
    }

    public void setTitle(String title) {
        window.setTitle(title);
    }

    public void setMessage(String message) {
        label.setText(message);
    }

    public String showAndWait() {
        window.showAndWait();
        return exitCode;
    }

    public static String display(String title, String message){
        CheckBoxDialog dlg = new CheckBoxDialog();
        dlg.setTitle(title);
        dlg.setMessage(message);

        return dlg.showAndWait();
    }
}

你想从这个对话中得到什么?如果用户单击Ybutton,我想返回Y,即id,并在controller@mrmcwolf中得到字符串“Y”。你想从这个对话中得到什么?如果用户单击Ybutton,我想返回Y,即id,并在controller@mrmcwolf中得到字符串“Y”