我想添加鍵盤快捷鍵到我的遊戲使用SWING。到目前爲止,我一直在使用下面的代碼:KeyEventDispatcher和焦點
KeyboardFocusManager.getCurrentKeyboardFocusManager()
.addKeyEventDispatcher(new KeyEventDispatcher() {
@Override
public boolean dispatchKeyEvent(KeyEvent e) { ... }
出於測試目的,我想創建此應用程序(測試的網絡遊戲)的兩個實例。問題在於,當我使用熱鍵時,非聚焦窗口抓住焦點。 (即後來創建的窗口。)
我懷疑問題是,
KeyboardFocusManager.getCurrentKeyboardFocusManager()
是一個靜態方法(這兩種情況下都從同一個JVM啓動)。
我可以考慮的唯一的其他選擇是讓每個組件都將它們的鍵事件委託給祖先JFrame,並在一個地方處理它們,但這會涉及很多鍋爐代碼,我認爲這是將是一個醜陋的解決方案。
另外,問題不會發生在正常的遊戲過程中,它只會讓我煩惱,而我正在測試。
這是今天Native OS的基本屬性,默認最後打開的窗口是focus ownser – mKorbel