KeyEventDispatcher和焦点

zsl*_*evi 0 java swing focus keyboard-events

我想在使用SWING的游戏中添加键盘快捷键.到目前为止,我一直在使用以下代码:

KeyboardFocusManager.getCurrentKeyboardFocusManager()
            .addKeyEventDispatcher(new KeyEventDispatcher() {


                @Override
                public boolean dispatchKeyEvent(KeyEvent e) { ... }
Run Code Online (Sandbox Code Playgroud)

出于测试目的,我想创建此应用程序的两个实例(测试网络播放).问题是当我使用热键时,非聚焦窗口会抓住焦点.(稍后创建的窗口.)

我怀疑问题是这样的

KeyboardFocusManager.getCurrentKeyboardFocusManager()
Run Code Online (Sandbox Code Playgroud)

是一个静态方法(两个实例都是从同一个JVM启动的).

我唯一想到的另一个选择是让每个组件将他们的键事件委托给祖先JFrame,并在一个地方处理它们,但这会涉及很多锅炉代码,我认为这将是一个丑陋的解.

此外,在正常的游戏过程中不会出现问题,它只会让我在测试时烦恼.

cam*_*ckr 5

我想在使用SWING的游戏中添加键盘快捷键

那你应该使用Key Bindings.