我有一個內容窗格,其中包含一個JScrollPane,它包裹着一個我正在使用的不可編輯的JTextArea(現在),只是顯示有關正在按什麼鍵的信息(正在嘗試讓這個KeyListener工作)。在背景框架上使用Java KeyListener
KeyListener位於JTextArea上,當選擇框架時一切正常。不過,即使選擇了另一個窗口,我也希望鍵盤按鍵被註冊。任何方式來做到這一點?
謝謝。
我有一個內容窗格,其中包含一個JScrollPane,它包裹着一個我正在使用的不可編輯的JTextArea(現在),只是顯示有關正在按什麼鍵的信息(正在嘗試讓這個KeyListener工作)。在背景框架上使用Java KeyListener
KeyListener位於JTextArea上,當選擇框架時一切正常。不過,即使選擇了另一個窗口,我也希望鍵盤按鍵被註冊。任何方式來做到這一點?
謝謝。
我在過去做過,但我不記得具體如何。我認爲它類似於:
KeyEventDispatcher dispatcher = new KeyEventDispatcher()
{
public boolean dispatchKeyEvent(KeyEvent e)
{
System.out.println(e.getKeyChar());
return false;
}
};
DefaultKeyboardFocusManager.getCurrentKeyboardFocusManager().addKeyEventDispatcher(dispatcher);
只需使用您的自定義代碼修改SysOut。如果要防止分派事件,則該方法應該返回true而不是false。我還發現可能解決您的問題的this question。
使用key bindings進行研究如果您需要在執行聆聽的組件沒有焦點時偵聽密鑰。另一方面,如果在另一個應用程序擁有焦點時嘗試收聽密鑰,那麼最好的方法是不要使用Java來實現此目的,而是使用一種編程語言,以使您能夠更接近操作系統,例如C或C++。
我忘了這堂課。感謝您的提醒! 1+ – 2011-02-17 20:26:22