【问题标题】:Window Close Listener And setDefaultCloseOperation窗口关闭侦听器和 setDefaultCloseOperation
【发布时间】:2015-05-25 15:19:45
【问题描述】:

我有一个关于摆动窗口监听器和默认关闭操作之间关系的问题。当我处理以下情况时会出现问题:

我为JFrame添加了一个窗口监听器(WindowAdapter用于监听器),并覆盖windowClosing函数:如果用户关闭窗口,会弹出一个对话框来确认,如果用户选择CANCEL 选项,然后直接返回。但是,当我测试代码并在关闭窗口时选择CANCEL 时,框架窗口仍然关闭(或者可能只是不可见,因为Java 图标仍在任务栏中)。

然后我用DO_NOTHING_ON_CLOSE添加默认的关闭选项,同样的测试行为,框架窗口没有关闭,这是我所期望的。

setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);

然后我把默认关闭选项改成EXIT_ON_CLOSE,同样的测试行为,直接关闭框架窗口(这次Java图标也消失了)。

这让我很困惑。这是否意味着窗口侦听器只能定义窗口关闭时要执行的操作但无法确定是否关闭窗口?或者我需要覆盖其他功能?

【问题讨论】:

  • 这是我所期望的。setDefaultCloseOperation(DO_NOTHING_ON_CLOSE); ---> myFrame.setVisible(false)

标签: java swing jframe default windowlistener


【解决方案1】:

窗口监听器只是一个监听器。它不会影响默认关闭操作,除非您在 windowClosing() 代码中实际更改了默认关闭操作。

我用:

frame.setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);

作为创建框架时的默认值。然后在windowClosing(...)方法中,如果用户确认关闭框架我更改默认:

frame.setDefaultCloseOperation(EXIT_ON_CLOSE);

查看Closing an Application 了解更多信息和更完整的示例代码。

【讨论】:

  • 感谢您的回复和分享的文章。
猜你喜欢
  • 1970-01-01
  • 2011-10-27
  • 2010-11-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多