【问题标题】:Exiting an application using "setDefaultCloseOperation" with a dialog使用带有对话框的“setDefaultCloseOperation”退出应用程序
【发布时间】:2014-04-10 19:56:45
【问题描述】:

我有 MainFrame 类的代码,this 是一个大型机对象。所以这是我的问题。当我执行this.setDefaultCloseOperation(DISPOSE_ON_CLOSE) 时,它会关闭对话框,但不会关闭应用程序。我知道我应该使用EXIT_ON_CLOSE,但这仅适用于JFrame,而不适用于MainFrame 对象。我尝试过使用System.exit(0) 解决问题,但它们要么在错误的时间退出,要么一起失败。无论如何,我可以访问框架角落的“X”按钮,并将其设置为当按下它时,它会执行某个操作?

【问题讨论】:

  • 显示一些代码。你的MainFrame 班级是什么样子的?
  • 如果你扩展了JDialog:试试JDialog.EXIT_ON_CLOSE。
  • ....访问框架角落的“X”按钮 是的,JFrame#addWindowListener,另见this 链接
  • “我知道我应该使用 EXIT_ON_CLOSE,但这仅适用于 JFrame” - 你有什么证据?你测试过吗?
  • 嗯...是的,我实际上有 MadProgrammer。它实际上只是来自 JFrame API 的直接调用。

标签: java swing jframe jdialog setdefault


【解决方案1】:

Azad 的评论成功了!按照说明转到链接。

编辑:更好的是,让我在这里发布正确的想法,以防问题消失。

dialog.addWindowListener(new WindowAdapter() { 
@Override public void windowClosed(WindowEvent e) { 
  System.exit(0);
  }
});

对话框是包含所有信息的 JDialog。我建议在定义和使用 JDialog 的方法末尾发布它。

【讨论】:

  • 你为什么不直接写dialog.setDefaultCloseOperation(JDialog.EXIT_ON_CLOSE)?
  • JDialog 必须是“DISPOSE_ON_CLOSE”。只有 JFrame 可以执行 EXIT_ON_CLOSE。
【解决方案2】:

它会关闭对话框,但不会关闭应用程序。

您为什么要尝试从对话框中退出应用程序?应用程序只能通过其 JFrame 关闭。

我是否可以访问框架角落的“X”按钮,并将其设置为在按下时执行特定操作?

请参阅Closing an Application 了解有关该主题的想法以及代码示例。

【讨论】:

  • 因为当我尝试将其放入 JFrame 时,我变得疯狂,格式差的 GUI 在 JDialog 中是完美的。
  • @user3010468, JFrame 或 JDialog 中的布局是相同的。您的代码是问题所在,而不是 JFrame。这就是为什么您总是通过将组件添加到面板然后将面板添加到框架来创建 GUI。我建议你修复你的代码。
猜你喜欢
  • 1970-01-01
  • 2012-01-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多