Вдохновленные успешными ответами на этот вопрос , у меня есть похожий вопрос, который не представляется решаемым с использованием того же подхода ...
Как перехватить Cmd + Tab на macOS в приложении Swing?
- «Обычные» механизмы ярлыков не работают (как и обычный способ добавления элементов
JComponent.getInputMap()
/ JComponent.getActionMap()
).
- Класс
ApplicationListener
в com.apple.eawt
также не работает, потому что он имеет только обработчики для очень специфических задач и ярлыков, среди них Cmd + Q , но не Cmd + Tab .
Вариант использования: я работаю с приложением удаленного фрейм-буфера / удаленного рабочего стола, которому нужно перехватить как можно больше ярлыков, чтобы передать их на управляемый компьютер.
Мое приложение использует немодальное JFrame
в качестве корневого Window
, и оно является"полноэкранным" в соответствии со следующим:
Class.forName("com.apple.eawt.FullScreenUtilities").getMethod("setWindowCanFullScreen", Window.class, Boolean.TYPE).invoke(null, window, true);
Class app = Class.forName("com.apple.eawt.Application");
Object geta = app.getMethod("getApplication").invoke(null);
geta.getClass().getMethod("requestToggleFullScreen", Window.class).invoke(geta, window);
Хотя это не "полноэкранный режим". Пользователь по-прежнему может легко вывести свою мышь из полноэкранного окна удаленного кадрового буфера и управлять другими окнами (например, на другом мониторе).