如何在scala swing中断窗口关闭机制

man*_*man 6 swing scala window savefiledialog

我正在使用SimpleSwingApplicationscala swing中的特征构建一个GUI .我想要做的是提供一个关闭机制,询问用户(是,否,取消),如果他还没有保存文件.如果用户点击取消,Application则不应该关闭.但是,一切都我想到目前为止有MainFrame.closecloseOperation没有工作.

那么Scala Swing是如何完成的?

我在使用Scala 2.9.

提前致谢.

Mir*_*tta 5

与霍华德建议的略有不同

import scala.swing._

object GUI extends SimpleGUIApplication {
  def top = new Frame {
    title="Test"

    import javax.swing.WindowConstants.DO_NOTHING_ON_CLOSE
    peer.setDefaultCloseOperation(DO_NOTHING_ON_CLOSE)

    override def closeOperation() { showCloseDialog() }

    private def showCloseDialog() {
      Dialog.showConfirmation(parent = null,
        title = "Exit",
        message = "Are you sure you want to quit?"
      ) match {
        case Dialog.Result.Ok => exit(0)
        case _ => ()
      }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

通过使用,DO_NOTHING_ON_CLOSE您有机会定义WindowEvent.WINDOW_CLOSINGscala帧接收事件时应该执行的操作.当scala框架收到WINDOW_CLOSING事件时,它会通过调用做出反应closeOperation.因此,要在用户尝试关闭框架时显示对话框,就足以覆盖closeOperation并实现所需的行为.