2009-11-01 201 views
0

我希望活动窗口(即JFrame或JDialog)能够接收特定的keyEvent,以便无论通过窗口如ALT + F4处理焦点该按键事件是否按下 它只要将活动窗口对焦关闭,我尝试覆盖postprocesskeyEvent,但它不能正常工作写全局监听器

回答

1

您可以使用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); 

如果你试图当用户按下ALT-F4然后一个事件处理程序不会帮助你从关闭应用程序停止窗口。我相信操作系统通过向应用程序发送SIGTERM来处理这个问题。 Java没有收到KeyEvent。

1

使用摆动时拦截击键标准方法是使用Key Bindings。虽然如前所述,这仍然不适用于Alt + F4。

如果你正试图阻止ALT + F4从关闭窗口,那么你需要使用setDefaltCloseOperation(...)方法什么也不做。 Closing an Application提供了有关此方法的更多信息。