Кажется, вы можете позвонить
dispose()
на раме.
dispose
реализован на scala.swing.Window
, поэтому применяется к фреймам и диалогам.
Вызов dispose
закрывает (восстанавливаемым способом, используя pack
и visible = true
для повторного открытия) дополнительные кадры и завершает приложение, если вызывается в последнем кадре.
Завершение работы приложения при любом вызове Frame quit()
, который вызывает любой код отключения, предоставленный перед вызовом System.exit.
Вот быстрый взлом, чтобы проиллюстрировать
import swing._
object SwingThing extends SimpleSwingApplication {
def top = new MainFrame {frame =>
val sf = new Frame {secondFrame =>
title = "Secondary Frame"
visible = true
contents = new FlowPanel {
contents += new Button(Action("Close Me") {secondFrame.dispose()})
contents += new Button(Action("Exit") {quit()})
}
}
val recoverBtn = new Button(Action("Recover") {sf.pack(); sf.visible = true})
val closeBtn = new Button(Action("Close Me") {frame.dispose()})
val exitBtn = new Button(Action("Exit") {quit()})
contents = new FlowPanel {
contents += recoverBtn
contents += closeBtn
contents += exitBtn
}
}
}