2014-04-18 33 views
0

好吧,这么长的故事总结,这是发生了什么,我正在尝试做什么。有KeyListener听不同的JFrame

  1. 我有一个名为GameGUI的类,这是一个JFrame。
  2. 此JFrame的是填充砖(含ImageIcons的JLabel)
  3. 我使用箭头键移动我周围的JFrame(刚更新的JLabel图像)
  4. 我做了一个设置选项的家伙,这是一个新的JFrame我setVisbile(true),进行更改,然后setVisible(false)
  5. 我setVisible(false)后,我的箭头键不再让我的角色在GameGUI上移动。

我曾尝试以下,哦其中没有工作:(基于关闭谷歌搜索我的问题,所有的猜测)

GameGUI gg = new GameGUI(); 
gg.setFocusable(true); 
gg.addKeyListener(null); 
gg.requestFocusInWindow(); 

我似乎无法找到一个办法让我的KeyListener搬回到GameGUI打开(显示)此设置菜单后关闭它(使之不可见)。我在设置菜单中有单选按钮,这就是为什么我相信由于物理鼠标点击而获得焦点的原因。

获得焦点回到GameGUI的任何帮助将不胜感激!

谢谢!

+0

我认为'gg.addKeyListener(null);'行是有罪的。 – slackmart

+0

这些都不是全部实施过,抱歉不提。迄今为止,我尝试了所有这些,但都没有取得成功。 – Austin

+0

请参阅[使用多个JFrames,好/坏实践?](http://stackoverflow.com/a/9554657/418556) –

回答

1

5.我setVisible(false)后,我的箭头键不再让我的角色在GameGUI上移动。

请勿使用KeyListener。 Swing旨在与Key Bindings一起使用。

请参阅Motion Using the Keyboard,这将解释您的可能问题并使用Key Bindings提供解决方案。