Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在背景帧上使用Java KeyListener_Java_Swing_Events_Key Bindings_Keylistener - Fatal编程技术网

在背景帧上使用Java KeyListener

在背景帧上使用Java KeyListener,java,swing,events,key-bindings,keylistener,Java,Swing,Events,Key Bindings,Keylistener,我有一个内容窗格,其中包含一个JScrollPane,它环绕着一个不可编辑的JTextArea,我(现在)使用它来简单地显示关于按下哪个键的信息(只是试图让这个KeyListener工作) KeyListener位于JTextArea上,当选择帧时,一切正常。但是,我希望即使选择了另一个窗口,也能注册按键。有办法吗 谢谢。如果您需要在进行监听的组件没有焦点时监听按键,请考虑使用。另一方面,如果你在其他应用程序有焦点时尝试侦听键,那么你最好不要使用java来实现这个,而是使用一种允许你更接近OS的

我有一个内容窗格,其中包含一个JScrollPane,它环绕着一个不可编辑的JTextArea,我(现在)使用它来简单地显示关于按下哪个键的信息(只是试图让这个KeyListener工作)

KeyListener位于JTextArea上,当选择帧时,一切正常。但是,我希望即使选择了另一个窗口,也能注册按键。有办法吗


谢谢。

如果您需要在进行监听的组件没有焦点时监听按键,请考虑使用。另一方面,如果你在其他应用程序有焦点时尝试侦听键,那么你最好不要使用java来实现这个,而是使用一种允许你更接近OS的编程语言,如C++或C++。

< P>我以前做过,但是我不记得具体是怎么做的。我认为这是类似的:

KeyEventDispatcher dispatcher = new KeyEventDispatcher()
{
    public boolean dispatchKeyEvent(KeyEvent e)
    {
        System.out.println(e.getKeyChar());
        return false;
    }
};

DefaultKeyboardFocusManager.getCurrentKeyboardFocusManager().addKeyEventDispatcher(dispatcher);

只需使用自定义代码修改SysOut。如果要防止事件被调度,则该方法应返回true而不是false。我还发现这可能会解决您的问题。

我知道您在使用代码做什么,但我不确定有什么好方法可以在我的主要方法中持续检查当前键盘焦点。。