如何在java swing中禁用键盘热键

时间:2016-01-15 16:35:14

标签: java swing netbeans

我想在我的netbeans项目中禁用键盘热键,例如T alt ctrl alt + f4,以便在我的应用程序开启时没有人可以打开任何内容

2 个答案:

答案 0 :(得分:3)

您要求在 Netbeans中使用方式禁用Windows的全局键盘热键。这根本不可能,因为在Netbeans或任何其他Windows应用程序甚至注意到它们之前,两个密钥组合都在内核级别注册和拦截。

有一些方法可以在Windows中禁用这些类型的热键,但这不能用Java以编程方式完成。而是尝试谷歌搜索"禁用热键Windows X"或"禁用ctrl alt del Windows X。

SuperUser上的答案建议在Windows 7上禁用ctrl + alt + del的可能的注册表修复。建议的注册表编辑是:

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\taskmgr.exe]

"Debugger"="Hotkey Disabled"

还有其他方法可以禁用某些热键,具体取决于您运行的Windows版本以及您对计算机的访问权限。没有管理员权限,任何解决方案都将很困难。

使用较低级别的语言(如C ++甚至C#)也可能会出现问题,但我认为任何Java库都无法拦截和阻止低级键盘事件。

答案 1 :(得分:0)

好吧,禁用密钥是一件困难的事情,但我认为你的问题可以通过另一种方式解决:

yourFrameOrWindow.setAlwaysOnTop(true);

这将使您的应用程序始终在屏幕上,如果它的全屏,则您的问题已解决,但这不会禁用ctrl + alt + del,或其他尝试关闭您的应用程序。

对于某些键组合,我认为你可以在一个onKeyPress方法中映射它们然后让它为空,如下所示:

void onKeyPress(int keyCode){
    if(keyCode == 43){
        //do nothing
    }
}

但我认为有一个特定的密钥组合监听器。