监视键盘状态而无需程序焦点

时间:2013-01-22 18:36:36

标签: java multithreading

我想在我的程序中调用一个不断观察键盘的线程,如果某个键被按下则告诉我(system.out)。

问题是KeyListener接口必须具有焦点才能返回keystate。 http://docs.oracle.com/javase/tutorial/uiswing/events/keylistener.html

有没有不同的方法来确定键盘上键的状态?

我的目的是看到用户按下了ctrl + n,如果是,则将系统剪贴板文本更新为某些内容。

CODE:

class KeyboardWatcher extends Thread 
{
    boolean flag = false;
    public void run()
    {
        while(!flag)
        {
            if (shift & n are pressed)
            {
                StringSelection stringSelection = new StringSelection("Clip Text");
                Clipboard clpbrd = Toolkit.getDefaultToolkit().getSystemClipboard();
                clpbrd.setContents(stringSelection, null);
                flag = true;
            }
        }
        return;
    }
}

1 个答案:

答案 0 :(得分:0)

如果没有Java Native Interface,这是不可能的。您将需要OS API级别的键盘钩子。您可以重复使用许多可用的解决方案。请看this这样的例子。