Я пытаюсь заставить проект groovy / griffon запрашивать у пользователя перед закрытием главного окна.Есть множество примеров этого в Интернете, и это кажется довольно простым: установите defaultCloseOperation в DO_NOTHING_ON_CLOSE, а затем пропустите вызов application.shutdown ().
Однако, когда я пытаюсь это сделать, окно все еще разрушается.Я новичок в Griffon, и это не мой проект, так что, возможно, я скучаю по другим вещам и надеялся, что вы, эксперты, можете помочь.
Ниже приведено начало кода создания представления:
@ArtifactProviderFor(GriffonView)
class TceView {
JFrame mainFrame
...
masterPage = builder.with {
def masterApp = application(size: [890, 700], id: 'mainWindow',minimumSize: [890, 700],//[890, 700]
title: application.configuration['application.title'] + " " + Launcher.version,
iconImage: imageIcon('/tce_1.png').image,
iconImages: [imageIcon('/tce_1.png').image,
imageIcon('/tce_1.png').image,
imageIcon('/tce_1.png').image],
defaultCloseOperation: WindowConstants.DO_NOTHING_ON_CLOSE,
windowClosing: { evt ->
mainFrame = evt.source
println("In windowClosing")
// The below is to check to see if our frame is invisible or destroyed.
// It turns out that mainFrame is undefined when the timer ticks.
def timer = new Timer(5000, new ActionListener() {
@Override
void actionPerformed(ActionEvent e) {
mainFrame.setVisible(true)
}
})
timer.start()
if (false)
application.shutdown()
}) {
// all the other code
}
}
В приведенном выше коде, если я установлю для запуска application.shutdown (), программа завершится, когда в верхнем правом углу окна будет нажата «x».Если application.shutdown () пропущен, окно закрывается, но программа все еще работает, когда нажата 'x'.
Заранее благодарим за любую помощь, которую вы можете предоставить!