如何在 Java AWT 应用程序中禁用系统键盘处理?

发布于 2024-12-06 14:46:31 字数 176 浏览 1 评论 0原文

我如何禁用此类键及其组合,例如 AltAlt + 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

孤者何惧 2024-12-13 14:46:31

一种方法是在“kiosk 模式”下创建程序,这需要 Java 以外的工具才能实现(例如 JNA 或 JNI)。如果你用谷歌搜索这个或在这个网站上搜索这个,你会发现更多关于它的信息。但是,如果我使用您的代码,我会非常沮丧,甚至可能生气,除非这是在专用的信息亭终端上运行。

编辑:另一种选择是根据此线程: java-full-screen- program-swing-tab-alt-f4

 window.setExtendedState(Frame.MAXIMIZED_BOTH); //maximise window
 window.setUndecorated(true); //remove decorations e.g. x in top right
 window.setAlwaysOnTop(true);

编辑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:

 window.setExtendedState(Frame.MAXIMIZED_BOTH); //maximise window
 window.setUndecorated(true); //remove decorations e.g. x in top right
 window.setAlwaysOnTop(true);

Edit 2: and this brute-force method: Remove the possibility of using Alt-F4 and Alt-TAB in Java GUI

濫情▎り 2024-12-13 14:46:31

找到了这个解决方案:

  • 对于 Tab - 使用 Frame.setFocusTraversalKeysEnabled(false);

  • for Alt - 添加keyEvent.consume(); 在每个键的末尾
    Alt 的事件处理代码块

然后,要查明是否按下了 AltCtrl 键 - 使用 keyEvent.isAltDown()keyEvent。 keyPressedkeyReleased 事件的 isControlDown() 方法。

感谢@Hovercraft 的快速回复!

Found this solution:

  • for Tab - use Frame.setFocusTraversalKeysEnabled(false);

  • for Alt - add keyEvent.consume(); at the end of each key
    event handling code block

Then, to find out if Alt or Ctrl key is pressed - use keyEvent.isAltDown() and keyEvent.isControlDown() methods of keyPressed or keyReleased events.

Thanks, @Hovercraft , for your quick response!

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文