这可能超出了Java小程序的范围。实际上,全局键盘钩子绝对不在简单使用Java的范围之内,但是我可以帮助您朝正确的方向发展。
但是,您有一些希望。我将向您介绍JNI(Java本机接口)的方向,它将允许您使用本机库。现在,既然您想留在Java世界中,建议不要直接使用JNI,因为您将不得不编写一些令人困惑的本机代码(通常为C,C
++)。JNI有几种包装器,可让您使用这些功能,但是本机实现已被抽象化,但是其中许多成本很高。
因此,我认为对您来说最好的解决方案是JNA(Java本机访问)。这使您可以直接从Java内部调用本机库。(注意:该实现将不会跨平台。您必须为Windows,Linux等进行单独的实现。)项目网站上的示例中有一个很好的Windows键盘钩示例。
至于不是在网页中打开它自己的窗口,您是希望小程序不在浏览器中运行而是在其单独的进程中运行,还是只在单独的窗口中运行,仍然依靠浏览器窗口打开?
如果您只想启动一个新窗口并且仍然需要打开浏览器,那么这里是一个很好的例子:
final frame window = new frame("This is the frame's Title Bar!");window.add(new Label(“This is the frame.”));
window.setSize(300,200);
window.setVisible(true);window.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent we){
window.dispose();
}
});如果您希望applet产生一个新的进程并在不需要浏览器的情况下运行,请查看JavaFX。



