如何在 Java AWT 应用程序中禁用系统键盘处理?
我如何禁用此类键及其组合,例如 Alt ; Alt + F4 以及我的 Java AWT 应用程序中的其他内容?
例如,我的 KeyboardListener
应该将这些键作为“常用”键和组合来处理,而无需关闭窗口或进入窗口菜单。
How can i disable such keys and their combinations as, for example, Alt ; Alt + F4 and others in my Java AWT application?
E.g. my KeyboardListener
should handle that keys as 'usual' keys and combinations without closing window or entering window menu.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
一种方法是在“kiosk 模式”下创建程序,这需要 Java 以外的工具才能实现(例如 JNA 或 JNI)。如果你用谷歌搜索这个或在这个网站上搜索这个,你会发现更多关于它的信息。但是,如果我使用您的代码,我会非常沮丧,甚至可能生气,除非这是在专用的信息亭终端上运行。
编辑:另一种选择是根据此线程: java-full-screen- program-swing-tab-alt-f4:
编辑2:这个暴力方法:删除使用 Alt-F4 的可能性和 Java GUI 中的 Alt-TAB
One way is to create a program in "kiosk mode", something that requires more than Java to achieve (such as JNA or JNI). If you google this or search this site for this, you'll find out more about it. If I were using your code, though, I'd be very frustrated and perhaps angry, unless this were being run on a dedicated kiosk terminal.
Edit: Another option is as per this thread: java-full-screen-program-swing-tab-alt-f4:
Edit 2: and this brute-force method: Remove the possibility of using Alt-F4 and Alt-TAB in Java GUI
找到了这个解决方案:
对于 Tab - 使用
Frame.setFocusTraversalKeysEnabled(false);
for Alt - 添加
keyEvent.consume();
在每个键的末尾Alt 的事件处理代码块
然后,要查明是否按下了 Alt 或 Ctrl 键 - 使用
keyEvent.isAltDown()
和keyEvent。
方法。keyPressed
或keyReleased
事件的 isControlDown()感谢@Hovercraft 的快速回复!
Found this solution:
for Tab - use
Frame.setFocusTraversalKeysEnabled(false);
for Alt - add
keyEvent.consume();
at the end of each keyevent handling code block
Then, to find out if Alt or Ctrl key is pressed - use
keyEvent.isAltDown()
andkeyEvent.isControlDown()
methods ofkeyPressed
orkeyReleased
events.Thanks, @Hovercraft , for your quick response!