1

我正在尝试在 Scala/IntelliJ 中运行一个非常简单的 GUI 应用程序:

def main(args: Array[String]) {

    val frame = new JFrame()
    frame.setSize(900, 700)
    frame.setVisible(true)

    //THis is probably not necessary
    frame.addWindowListener(new WindowAdapter {
      override def windowClosed(e: WindowEvent) {
        System.exit(0)
      }
    })

  }

首先,当我关闭窗口时不会调用 windowAdapter 代码......其次,当我关闭窗口时,应用程序仍在运行,我必须从 intellij 控制台停止它。有什么想法可能导致这种情况吗?

4

1 回答 1

0

关闭时 JFrame 的默认行为是 HIDE_ON_CLOSE ,它专门执行它所说的。这就是您的事件没有被触发的原因:因为窗口并没有真正关闭。您可以通过更改框架的默认关闭行为来解决此问题:

frame.setDefaultCloseOperation(DISPOSE_ON_CLOSE)

您还可以使用 windowClosing 更改您的事件。请参阅 java 文档:

当用户尝试从窗口的系统菜单关闭窗口时调用。

或者你可以简单地摆脱你的听众并添加:

frame.setDefaultCloseOperation(EXIT_ON_CLOSE)
于 2013-05-09T01:19:22.710 回答