如何使用“警报”对话框阻止用户单击退出图标时关闭阶段?

时间:2015-04-18 02:12:23

标签: javafx-8 alertdialog

如何使用“提醒”对话框要求用户确认他/她是否要关闭舞台?

如果答案为是,则进程使用System.exit(0)。

如果回答“否”,请退出setOnCLoseRequest()方法。

    Platform.setImplicitExit(false);

    stage.setOnCloseRequest(new EventHandler<WindowEvent>() {
        public void handle(WindowEvent e) {
            boolean isExit = exitDialog();
            if (!isExit) {
                e.consume();
            }
        }
    });  

另外,我有

public boolean exitDialog() {
    Alert alert = new Alert(AlertType.CONFIRMATION);
    alert.setTitle("Mars Simulation Project");
    alert.setHeaderText("Confirmation Dialog");
    alert.initOwner(stage);
    alert.setContentText("Do you really want to quit MSP?");
    ButtonType buttonTypeYes = new ButtonType("Yes");
    ButtonType buttonTypeNo = new ButtonType("No");
    alert.getButtonTypes().setAll(buttonTypeYes, buttonTypeNo);
    Optional<ButtonType> result = alert.showAndWait();
    if (result.get() == buttonTypeYes){
        if (multiplayerMode != null)
            if (multiplayerMode.getChoiceDialog() != null)
                multiplayerMode.getChoiceDialog().close();
        return true;
    } else {
        return false;
    }
}

注意:我尝试通过添加Platform.setImplicitExit()和e.consume()来使用以下链接中的建议,但它们不起作用!

编辑:我想知道为什么警报对话框根本没有弹出。所以WindowEvent e甚至没有被捕获。如果这是罪魁祸首,我该如何解决?

参考:Prevent/Cancel closing of primary stage in JavaFX 2.2

0 个答案:

没有答案