2009-11-01 194 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提供了有關此方法的更多信息。