1

我有一个包含 JScrollPane 的内容窗格,该 JScrollPane 包裹在一个不可编辑的 JTextArea 周围,我正在使用它(现在)简单地显示有关正在按下的键的信息(只是试图让这个 KeyListener 工作)。

The KeyListener is on the JTextArea and everything works fine when the frame is selected. 但是,即使选择了另一个窗口,我也希望注册按键。有什么办法可以做到这一点?

谢谢。

4

2 回答 2

3

我过去是这样做的,但我不记得具体是怎么做的。我认为它类似于:

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

DefaultKeyboardFocusManager.getCurrentKeyboardFocusManager().addKeyEventDispatcher(dispatcher);

只需使用您的自定义代码修改 SysOut。如果你想阻止一个事件被分派,该方法应该返回 true 而不是 false。我还发现这个问题可能会解决您的问题。

于 2011-02-17T19:53:43.060 回答
0

如果您需要在进行侦听的组件没有焦点时侦听键,请考虑使用键绑定。另一方面,如果您试图在另一个应用程序有焦点时听键,那么您最好的选择是不要为此使用 Java,而是使用一种可以让您更接近操作系统的编程语言,例如C 或 C++。

于 2011-02-17T17:10:33.847 回答