Как отключить обработку системной клавиатуры в приложении Java AWT? - PullRequest
1 голос
/ 23 сентября 2011

Как отключить такие клавиши и их комбинации, как, например, Alt ; Alt + F4 и другие в моем приложении Java AWT?

например. my KeyboardListener должен обрабатывать эти клавиши как «обычные» клавиши и комбинации без закрытия окна или входа в меню окна.

Ответы [ 2 ]

2 голосов
/ 25 сентября 2011

Нашли это решение:

  • для Вкладка - используйте Frame.setFocusTraversalKeysEnabled(false);

  • для Alt - добавить keyEvent.consume(); в конце каждой клавиши блок кода обработки событий

Затем, чтобы выяснить, нажата ли клавиша Alt или Ctrl - используйте keyEvent.isAltDown() и keyEvent.isControlDown() методы keyPressed или keyReleased событий.

Спасибо, @Hovercraft, за быстрый ответ!

2 голосов
/ 23 сентября 2011

Одним из способов является создание программы в «режиме киоска», чего требует больше, чем просто Java (например, JNA или JNI).Если вы поищете это в Google или поищете на этом сайте, вы узнаете об этом больше.Однако, если бы я использовал ваш код, я был бы очень расстроен и, возможно, рассержен, если бы он не запускался на выделенном терминале киоска.

Редактировать: согласно этому обсуждению другой вариант: java-full-screen-program-swing-tab-alt-f4 :

 window.setExtendedState(Frame.MAXIMIZED_BOTH); //maximise window
 window.setUndecorated(true); //remove decorations e.g. x in top right
 window.setAlwaysOnTop(true);

Редактировать 2: и этот метод грубой силы: Устранить возможность использования Alt-F4 и Alt-TAB в Java GUI

...