阻止或取消退出 JavaFX 2

2023-11-20

当退出 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 above:

/** 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/JavaFxDialogfileSave 是“文件”->“保存”菜单项的事件处理程序。对于文件 -> 退出菜单项:

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

希望这对某人有帮助!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

阻止或取消退出 JavaFX 2 的相关文章

  • 使用 WinAPI 在 C# 中隐藏任务栏窗口

    相信我 我用谷歌搜索过它 并期望它是一个相当容易找到的东西 事实证明并非如此 我有窗把手 但没有表格 我该怎么做 谢谢 声明这些 DllImport user32 dll SetLastError true static extern in
  • 如何在 Javafx 中对齐对话框窗格的“确定”按钮?

    我想对齐 即位置中心 对话框窗格的 确定 按钮 我已经尝试过下面的代码 但它不起作用 Dialog dialog new Dialog DialogPane dialogPane dialog getDialogPane dialogPan
  • 如何将JavaFX嵌入到eclipse rcp视图中

    我正在尝试从简单的 Eclipse 视图中使用 JavaFX 2 但我得到了一个 java lang UnsatisfiedLinkError 类的 URL 无效 bundleresource 435 fwk1827795025 com s
  • JavaFX 全屏 - 根据屏幕尺寸调整元素大小

    有没有什么方法可以使全屏 如果可能的话也调整大小 而不是重新排列所有内容 实际上它所做的是重新排列元素 例如调整大小但调整到整个屏幕 以形成实际的全屏模式 就像通常改变屏幕分辨率的游戏一样 以便按钮和文本根据屏幕 窗口的大小相应增长 另外
  • javafx中的stackpane和root有什么区别?

    我正在练习javafx做饼图 以下是开发饼图的代码 如果我这样做Group并与StackPane 我发现输出没有区别 我已经评论了组部分 只是徘徊两者之间的区别 import javafx application Application i
  • JavaFX 2:TableView:删除标题+空时显示网格

    我有两个关于 Javafx 2 中的 TableView 的问题 1 是否可以隐藏表格中的标题 2 当表为空时 它只显示一个白色窗格 上面写着 表中没有内容 是否可以更改此设置以显示默认网格 即使表格为空 如果可能的话 我想要一个带有 CS
  • JavaFX - 为什么多次将节点添加到窗格或不同的窗格会导致错误?

    我现在正在学习基本的 JavaFX 我不明白我正在阅读的书中的这一说法 不 诸如文本字段之类的节点只能添加到一个窗格中一次 将节点添加到多次窗格或不同的窗格将导致运行时错误 我可以从书中提供的UML图看出它是一个组合 但我不明白为什么 库类
  • 如何动态调整jqgrid到当前窗口大小?

    如何动态调整jqgrid到当前窗口大小 基于javascript jQuery 最好的例子在这里 TinyMCE 去 http www tinymce com tryit full php http www tinymce com tryi
  • 如何让Gtk+窗口背景透明?

    我想让 Gtk 窗口的背景透明 以便只有窗口中的小部件可见 我找到了一些教程 http mikehearn wordpress com 2006 03 26 gtk windows with alpha channels https web
  • window.open:是否可以打开一个新窗口并修改其 DOM

    我想打开一个新窗口 var my window open iframe html blank height 600 width 600 但当我打开它时 我想修改它的DOM 我尝试过 var div my document createEle
  • 我们可以像 swing JSplitPane 一样在 Javafx SplitPane 上添加 OneTouchExpansable 按钮吗

    我可以在 JavaFX 上使用 css java api 库添加 OneTouchExpandable 按钮吗SplitPane Swing 中已经存在此选项JSplitPane 但我在 JavaFX API 上找不到该选项 我想 我们可以
  • 在系统托盘中隐藏 tkinter 窗口 [重复]

    这个问题在这里已经有答案了 我正在制作一个程序来提醒我朋友的生日 这样我就不会忘记祝福他们 为此 我制作了两个 tkinter 窗口 1 First one is for entering name and birth date 2 Sec
  • JavaFX HTMLEditor - 插入图像功能

    我正在使用 JavaFX 集成的 HTMLEditor 它具有的所有功能都很好 但我还需要具有在 HTML 文本中插入图像的功能 你知道我可以使用的一些来源吗 或者其他一些可以在 JavaFX 中使用的 HTML WYSIWYG 编辑器并且
  • 关闭弹出窗口后重新加载父页面

    我试图让用户通过弹出窗口登录 当他们单击弹出窗口的链接 这是一个 php 变量 时 他们可以登录 当窗口关闭时 我希望它重新加载他们最初所在的页面 父页面 这是signin php页面上的代码 但这所做的只是使登录页面成为用户所在的页面 我
  • 计算 Windows 10 上第 3 方窗口的标题栏按钮的总宽度

    我最初的方法是使用GetSystemMetrics with SystemMetric SM CXSIZE以及一些基于可用按钮的简单数学计算 乘以 3 或乘以 1 通过WindowStyle DllImport user32 dll pri
  • JavaFX 多线程 - 连接线程不会更新 UI

    我正在尝试创建一个加载程序对话框 用户可以在其中知道程序正在加载所请求的内容并且程序正在按预期运行 但正因为如此 我需要join 解析器线程和之前继续主线程 这使得对话框空白 解析器任务 java public class ParserTa
  • C# 如何使用 WM_GETTEXT / GetWindowText API / 窗口标题

    我想获取应用程序的控件 句柄的内容 这是实验代码 Process processes Process GetProcessesByName Notepad foreach Process p in processes StringBuild
  • MonoMac 窗口关闭时没有错误

    我刚刚开始在 Xamarin Studio 中使用 MonoMac 并且遇到了最奇怪的问题 我有一个带有 NSButton 和 NSTextField 的窗口 至此 我已经删除了按钮上的事件处理程序 因此它不会执行任何操作 除了在单击它时突
  • JavaFX Platform.runLater 的使用以及从不同线程访问 UI

    我有几个问题Platform runLater 我有一个 JavaFX 应用程序类 在这个类中 我运行一个线程 该线程从网络套接字读取数据 现在当我创建一个新的Stage在线程内部 系统抛出异常 JavaFX 事件调度程序线程和我的网络读取
  • 如何设置菜单按钮和菜单项的样式

    我尝试更改菜单按钮中的样式 我可以更改菜单按钮样式 但不能更改其菜单项 无论我尝试什么 菜单按钮内的菜单项都保持不变 menu button fx background color black menu button label fx ba

随机推荐

  • 如何格式化 Vuetify 数据表日期列?

    我有一个简单的数据表 使用Vuetify数据表 其中一列是createdOn 日期时间 我想格式化它 我该怎么做 这就是我现在得到的
  • 在输入[type='number']上,Edge 始终为“valueAsNumber”返回“NaN”

    以下内容在 Chrome 和 Firefox 中运行良好 但在 Edge 中会发出警报NaN无论输入 document querySelector button addEventListener click function alert d
  • Paypal 按钮 - 添加变量以返回 URL

    我正在尝试向网站添加一个简单的 PayPal 按钮 我想要做的是将按钮设置为包含需要选择的 选项 这不是问题 我已创建按钮并显示选项选择框 我想要做的是返回到我自己的域上的 URL 但让 URL 包含付款前选择的下拉框中的选定选项 所以我从
  • 在控制器之间设置和检索对象的 Angular 服务

    我一直在尝试从 http post 响应设置一个服务对象到一个控制器并从另一个控制器获取它 我在 SO 或网站中看到的教程更多地侧重于将其从 HTML 输入获取到控制器 然后另一个控制器获取值 我想避免使用 rootscope 而且我是 a
  • 如何在64位Window下连接R与Access数据库?

    当我尝试将 R 与 Access 数据库连接时出现错误 odbcConnectAccess is only usable with 32 bit Windows 有谁知道如何解决这个问题 library RODBC mdbConnect l
  • OpenCVSharp:无法加载 DLL“OpenCvSharpExtern”

    我已经在我的项目中使用 NuGet 管理器安装了最新的 OpenCVSharp 2 2 4 10 201 有关 OpenCVSharp CvMat 的所有内容都工作正常 加载 操作等 因此我确信安装是正确的 但是我根本无法使用 OpenCV
  • iPhone 6 显示缩放功能扰乱了整个视图

    我在使用 iPhone 6 时遇到问题显示缩放功能 如 Xcode 6 1 1 模拟器没有显示缩放功能来测试 并且仅具有标准显示 Problem 当我在模拟器和 iPhone6 带标准显示 上运行代码时 它工作正常 但是当我在 iPhone
  • 如何减少新表单的“使用”样板?

    每次我向项目中添加新表单时 都会在使用条款中删除一大堆样板文件 uses Windows Messages SysUtils Variants Classes Graphics Controls Forms Dialogs 说真的 谁会定期
  • npm 在哪里安装包?

    有人可以告诉我在哪里可以找到我使用安装的 Node js 模块吗npm 全球图书馆 你可以运行npm list g查看安装了哪些全局库以及它们所在的位置 使用npm list g head 1对于仅显示路径的截断输出 如果您只想显示主包而不
  • p.classname 或 .classname p,有什么区别吗?

    所以 我对这个简单的事情有点困惑 我已经尽可能多地用谷歌搜索 但我只是不知道谷歌搜索的正确关键字 我尝试了 CSS 选择器等 没有答案足以消除我的困惑 所以我也测试过 p classname似乎不起作用 但根据我正在读的书中的定义 2012
  • 如何计算R中矩阵乘积的对角线

    我有两个矩阵A and B 那么最快的方法是什么just计算diag A B 即内积ith row of A and ith的列B and 不关心其他项的内积 补充 A and B分别具有较大的行数和列数 这可以在不进行完整矩阵乘法的情况下
  • WPF 中 MDI 的替代方案?

    希望这是一个合适的问题 我第一次使用 WPF 最终目标是将我们的程序从 winforms 应用程序转换为 WPF 应用程序 我们的应用程序当前使用 MDI 表单作为主表单 以允许打开多个窗口来显示数据等 在 WPF 中 显示多组数据的最佳实
  • pkill 通过远程 ssh 与另一个命令结合返回 255

    当我尝试在远程主机上结合另一个命令执行 pkill 时 它总是返回 255 即使这两个命令都成功 Examples ssh
  • 如何在 R 中创建显示预测模型、数据和残差的图表

    给定两个变量 x and y 我对变量运行动态回归 并希望根据其中一个变量绘制拟合模型 并在底部显示实际数据线与预测线的残差 以显示实际数据线的差异 我以前见过它 我以前也做过 但我一生都不记得如何做或找到任何解释它的东西 这让我陷入了困境
  • R doParallel 进度条来监控已完成的作业

    我正在尝试编写一个具有多线程功能的 CRAN 包 我得到了一个完美的解决方案doSNOW 但该软件包已被 CRAN 团队标记为 取代 他们要求我切换到doParallel解决方案 这很好 但是我找不到一种方法来监控使用完成的作业数量doPa
  • Rails ActiveStorage url_for 返回无效的 URL

    我有一个带有头像的员工模型 我可以将图像附加到头像 但每当我尝试显示图像时 url for employee avatar 产生死链接 我所看到的只是来自的价值alt来自标签的属性 我得到的图像标签如下 img src rails acti
  • 您可以在不使用相对路径的情况下从 css 引用图像吗?

    我想创建一个带有背景图像CSS的div mydiv background image url public images foo png background repeat repeat x 现在 我无法在 css 中使用路由 因此我必须使
  • 如何将“wchar_t *”转换为“const char *”

    我怎样才能转换 wchar t to const char 使用C MFC VS2010 谢谢 由于问题是关于MFC的 我建议如下 CStringA a Test CStringW w L Test a CStringA w w CStri
  • ClassLoader 不提供“addTransformer(ClassFileTransformer)”方法

    我正在使用 Spring 和 AspectJ 进行一些不错的编织 插入后我刚刚遇到了这个问题
  • 阻止或取消退出 JavaFX 2

    当退出 JavaFX 程序时 我将重写 Application stop 以检查未保存的更改 这工作正常 但最好为用户提供取消操作的选项 换句话说 Application stop 是最后机会沙龙 虽然它确实捕获了退出 但撤销退出过程有点晚