KeyEventDispatcher和焦点

时间:2013-10-18 16:48:13

标签: java swing focus keyboard-events

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

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


                @Override
                public boolean dispatchKeyEvent(KeyEvent e) { ... }

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

我怀疑问题是那个

KeyboardFocusManager.getCurrentKeyboardFocusManager()

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

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

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

1 个答案:

答案 0 :(得分:5)

  

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

然后你应该使用Key Bindings