Apple JVM в различных версиях OS X, по-видимому, была сломана из-за того, что они не генерируют событие WindowClosing, когда они должны (например, если вы закрываете основной JFrame приложения, нажимая кнопку закрытия).
(в последних обновлениях Apple Java вы можете установить свойство, заставляющее генерировать событие, но это не то, что я ищу)
Моя проблема проста: я 'Я хотел бы показать «подсказку», когда пользователь закрывает приложение.Однако я не могу (из-за того, что событие не генерируется) обнаружил, что пользователь закрыл окно.
Поэтому я подумал, что мог бы использовать хук отключения:
Runtime.getRuntime().addShutdownHook(...)
Однако, очевидно, создаваяJFrame из ловушки завершения работы кажется проблематичным: это похоже на то, что EDT уже исчез, когда вызывается ловушка отключения.
Я пробовал несколько вещей, и, похоже, ничто не имеет смысла: например, мой «Tip» JFrame остается без измененийсерый (несмотря на то, что он работает нормально, когда вызывается из любого места, кроме хука отключения) или программа закрывается немедленно.Я пытался использовать защелку и ждать защелки от крюка отключения, но похоже, что EDT там больше не было.
В настоящее время я серьезно рассматриваю возможность создания второго Java-приложения просто для отображения всплывающей подсказки в видеобходной путь, но я думаю, что это немного излишне (но, по крайней мере, это сработало бы).
Кто-нибудь когда-нибудь пытался создать окно из ловушки отключения и вызывать вещи в EDT, и есть ли какие-либо ошибки, о которых нужно знать?(помните, что я не могу надежно ловить события закрытия окна в OS X из-за известных очень давних ошибок Apple VM).