java编写全局侦听器

rbpvctlc  于 2021-07-05  发布在  Java
关注(0)|答案(2)|浏览(346)

我希望活动窗口(即jframe ot jdialog)接收特定的keyevent,以便无论窗口在何处处理该keyevent的对焦,例如alt+f4如果您在活动窗口将关闭对焦的任何位置按下它,我都会尝试覆盖postprocessekeyevent,但它无法正常工作

z9zf31ra

z9zf31ra1#

可以使用java.awt.toolkit中的addawteventlistener()方法将全局事件侦听器添加到应用程序中。
http://java.sun.com/javase/6/docs/api/java/awt/toolkit.html#addawteventlistener%28java.awt.event.awteventlistener,%20long%29
在添加侦听器时,您需要选择要通过事件掩码接收的事件类型。
例如:

// Then on startup register.
AWTEventListener myGlobalKeyListener = new MyGlobalKeyListener();

Toolkey.getDefaultToolkit().addAWTEventListener(myGlobalKeyListener, AWTEvent.KEY_EVENT_MASK);

如果您试图阻止windows在用户按alt-f4时关闭应用程序,那么事件处理程序将不会帮助您。我相信操作系统通过向应用程序发送sigterm来处理这个问题。java没有为此接收keyevent。

fjaof16o

fjaof16o2#

使用swing时拦截击键的标准方法是使用键绑定。尽管如前所述,这仍然不适用于alt+f4。
如果试图阻止alt+f4关闭窗口,则需要使用setdefaltcloseoperation(…)方法不执行任何操作。关闭应用程序可以提供有关此方法的更多信息。

相关问题