Вы можете попробовать, добавив Listener
к панели содержимого вашего JWindow
, который вы можете получить из window.getContentPane().addKeyListener(..)
, чтобы проверить, работает ли он.
Проблема может заключаться в том, что если у вас есть что-то сфокусированное, которое находится внутри JWindow
, но это не само JWindow
, то события будут отправляться на внутренне сфокусированный элемент. Вы также можете попробовать добавить KeyListener
к тому, что у вас есть внутри этого окна ..
EDIT:
Если немного поискать на форуме Sun , кажется, что заставить вас сосредоточиться на JWindow
API, который вы можете сделать, это
JWindow myWindow = ...
myWindow.setFocusableWindowState(true);
myWindow.setFocusable(true);
, если он все еще не работает, лучшее решение - использовать JFrame
:
public class WindowTest {
public static void main(String[] args) {
JFrame frame = new JFrame();
// remove menu bar and title bar
frame.setUndecorated(true);
frame.setVisible(true);
JWindow window = new JWindow(frame); // this works
window.setBounds(0, 50, 200, 200);
window.setVisible(true);
}
}
EDIT2: комплексное решение может заключаться в том, чтобы получить ActionMap
с помощью getActionMap()
, а затем добавить действие для всех нажатий клавиш клавиатуры, которые просто его буферизуют, затем вы можете отправлять их в любое время (например, после клавиши возврата)