我有一个内容窗格,其中包含一个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