пишущий глобальный слушатель - PullRequest
0 голосов
/ 01 ноября 2009

Я хочу, чтобы активное окно (т. Е. JFrame или JDialog) получало конкретный keyEvent, так что, когда бы ни фокусировалось это событие, оно обрабатывается окном, таким как ALT + F4, если вы нажимаете когда фокусировка активного окна закрывается, я пытаюсь переопределить postprocesskeyEvent, но он не работает нормально

Ответы [ 2 ]

1 голос
/ 01 ноября 2009

Стандартный подход для перехвата нажатий клавиш при использовании Swing заключается в использовании привязок клавиш . Хотя, как упоминалось ранее, это все равно не будет работать для Alt + F4.

Если вы пытаетесь запретить Alt + F4 закрывать окно, вам нужно использовать метод setDefaltCloseOperation (...), чтобы ничего не делать. Закрытие приложения дает больше информации об этом подходе.

1 голос
/ 01 ноября 2009

Вы можете добавить прослушиватель глобальных событий в ваше приложение с помощью метода addAWTEventListener () в java.awt.Toolkit.

http://java.sun.com/javase/6/docs/api/java/awt/Toolkit.html#addAWTEventListener%28java.awt.event.AWTEventListener,%20long%29

Вам нужно будет выбрать тип событий, которые вы хотите получать, с маской событий при добавлении слушателя.

Например:

// Then on startup register.
AWTEventListener myGlobalKeyListener = new MyGlobalKeyListener();

Toolkey.getDefaultToolkit().addAWTEventListener(myGlobalKeyListener, AWTEvent.KEY_EVENT_MASK);

Если вы пытаетесь остановить закрытие окна вашим приложением, когда пользователь нажимает ALT-F4, то обработчик событий вам не поможет. Я верю, что операционная система справляется с этим, отправляя SIGTERM в приложение. Java не получает KeyEvent для этого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...