У меня есть JFrame с несколькими компонентами на нем, и я не могу получить событие KeyPressed из JFrame, потому что кадр никогда не фокусируется, и событие работает только тогда, когда оно сфокусировано. Как я должен сделать подобное событие, но только если он работает, когда окно сосредоточено, а не только отдельный компонент?Java/Swing - Создание горячих клавиш
0
A
ответ
0
Я нашел тему на этом сайте, которая делает это чрезвычайно легко, без необходимости связывания клавиш или чего-то еще. Все это, это переопределенный метод dispatchKeyEvent; Я не знаю, если это лучший способ сделать это, но это работает для меня
Вот ссылка на нить How can I listen for key presses (within Java Swing) across all components?
KeyboardFocusManager.getCurrentKeyboardFocusManager()
.addKeyEventDispatcher(new KeyEventDispatcher() {
@Override
public boolean dispatchKeyEvent(KeyEvent e) {
System.out.println("Got key event!");
return false;
}
});
0
Проще всего было бы разместить JPanel в JFrame, затем сделайте все, используя JPanel вместо JFrame.
Посмотрите на [Как использовать привязки клавиш] (http://docs.oracle.com/javase/tutorial/uiswing/misc/keybinding.html) – MadProgrammer
@AndrewThompson Это ответ, но это будет ответ только на ссылку, так что :(- но да, это может быть хорошая причина, потому что ничего не ответит на вопрос. – MadProgrammer
Я голосую, чтобы закрыть этот вопрос как не относящийся к теме, потому что на вопрос лучше всего ответить, читая [Как использовать привязки клавиш] (http://docs.oracle.com/javase/tutorial/uiswing/misc/keybinding.html) учебник – MadProgrammer