【问题标题】:Preventing hide of the main dialog防止隐藏主对话框
【发布时间】:2014-01-14 19:27:24
【问题描述】:

我正在尝试阻止关闭我的应用程序,但是查看 JavaFX 文档(以及在一些实现之后)我注意到 setOnCloseRequest() 仅在用户尝试使用关闭按钮或 ALT+F4 快捷方式关闭窗口时才有效.由于我需要拦截关闭的内部尝试,我使用setOnHiding(),这样我可以捕获关闭应用程序主对话框的所有尝试,但是我仍然无法阻止关闭:

public abstract class AppBase extends Application {
    public void init(){
        dialogoPrincipal.getPainel().getScene().getWindow().setOnHiding(new EventHandler<WindowEvent>() {
            @Override
            public void handle(WindowEvent event) {
                event.consume();
            }
        });
    }
}

我做错了什么吗?有没有其他方法可以解决这个问题?

【问题讨论】:

  • 请问您为什么要有效地防止您的申请被终止?
  • @PeekaySwitch 根据用户的任务,应用程序会在尝试关闭时要求确认。

标签: events event-handling javafx javafx-2 javafx-8


【解决方案1】:

CloseRequest 事件由 GUI 用户触发,Hide 事件以编程方式调用。因此,您可以控制hide 事件调用的代码流。实现一些包装实用程序类,如StageUtil.hideRequest(stage) 或将您自己的扩展为stage.myHide() 等。hiding 事件似乎不能被使用,我认为这是一个正确的决定设计hidinghidden 事件的目的在它们的 javadocs 中有描述,但没有提及使用它们。

【讨论】:

    【解决方案2】:

    尝试在您的控制器上实现一个窗口事件处理程序:

    public class XYZ implements EventHandler<WindowEvent>
    {
        @Override
        public void handle( WindowEvent closeEvent )
        {
            closeEvent.consume();
        }
    }
    

    或者尝试在你的 AppBase 类上实现它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多