加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

window – 阻止或取消退出JavaFX 2

发布时间:2020-12-14 04:19:03 所属栏目:Windows 来源:网络整理
导读:退出 JavaFX程序时,我正在重写Application.stop()以检查未保存的更改.这没关系,但是给用户提供取消操作的选项会很好. 换句话说,Application.stop()是最后一次机会,虽然它确实阻止了退出,但撤销退出流程还有点晚. 更好的是为关闭请求设置一个监听器,可以通过
退出 JavaFX程序时,我正在重写Application.stop()以检查未保存的更改.这没关系,但是给用户提供取消操作的选项会很好.
换句话说,Application.stop()是最后一次机会,虽然它确实阻止了退出,但撤销退出流程还有点晚.

更好的是为关闭请求设置一个监听器,可以通过使用该事件来取消该监听器.

在应用程序类中:

public void start(Stage stage) throws Exception {
    FXMLLoader ldr = new FXMLLoader(getClass()
                .getResource("Application.fxml"));
    Parent root = (Parent) ldr.load();
    appCtrl = (ApplicationController) ldr.getController();

    Scene scene = new Scene(root);

    stage.setScene(scene);
    stage.show();

    scene.getWindow().setOnCloseRequest(new EventHandler<WindowEvent>() {
        public void handle(WindowEvent ev) {
            if (!appCtrl.shutdown()) {
                ev.consume();
            }
        }
    });
}

然后在应用程序控制器中,上面引用为appCtrl:

/** reference to the top-level pane                               */
@FXML
private AnchorPane mainAppPane;

public boolean shutdown() {
    if (model.isChanged()) {
        DialogResult userChoice =
                ConfirmDialog.showYesNoCancelDialog("Changes Detected","Do you want to save the changes?  Cancel revokes the "
                + "exit request.",mainAppPane.getScene().getWindow());

        if (userChoice == DialogResult.YES) {
            fileSave(null);

            if (model.isChanged()) {
                // cancelled out of the save,so return to the app
                return false;
            }
        }

        return userChoice == DialogResult.NO;
    }

    return true;
}

注意:在FXML中引用mainAppPane(在这种情况下使用JavaFX Scene Builder)以允许访问场景和窗口;该对话框是从https://github.com/4ntoine/JavaFxDialog扩展而来的对象,fileSave是File – >的事件处理程序.保存菜单项.对于文件 – >退出菜单项:

@FXML
private void fileExitAction(ActionEvent ev) {
    if (shutdown()) {
        Platform.exit();
    }
}

希望这有助于某人!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读