EDIT Использование DISPOSE_ON_CLOSE — это не то, что мне нужно, потому что у меня есть «обратная» проблема: REPL остается активным, когда я закрываю JFrame (что хорошо), но затем также остается в живых при запуске из-за пределов REPL (что плохо).
Я пишу Swing-приложение на Clojure, и мне удобно тестировать как из REPL (nrepl под Emacs), так и извне REPL (например, используя lein run
или запустив автономный < em>.jar).
Когда я не запускаю свое приложение Swing из REPL, мне удобно установить операцию закрытия по умолчанию EXIT_ON_CLOSE. Например:
(.setDefaultCloseOperation jframe JFrame/EXIT_ON_CLOSE)
Так что я могу нажать кнопку закрытия JFrame и покончить с моим приложением.
Однако, по-видимому (я могу ошибаться в этом, но я думаю, что я ничего не вижу), это проблематично при запуске из REPL: как только я нажимаю кнопку закрытия JFrame, я, по-видимому, убиваю nrepl server и должны повторно открыть новый nrepl.
Зная, что мне нужно тестировать как из nrepl, так и извне любого REPL, как я могу решить свою проблему?
Должен ли я «обнаружить», что я запущен из REPL, а затем не устанавливать операцию закрытия по умолчанию для выхода? Или?