当我更改布尔值时,KeyListener没有监听

时间:2011-06-03 14:13:04

标签: java keylistener

好吧,我正在制作一个小型乒乓球游戏,而且,我正在制作一个开始菜单。就像,你启动游戏,获得一个菜单,你点击游戏,然后游戏开始,现在,除了一件事,一切都按我想要的方式工作。当我点击按钮时,一切都被绘制,球开始前进,一切都正确更新,但是,我再也无法移动我的玩家了。这就像KeyListener已停止工作,我的程序突然停止对键的反应。我会给你们所有我的游戏源代码,因为,我很困惑,我不知道是什么导致它,或者如何解决它。我的菜单通过在按下按钮时更改布尔值,当布尔值为假,绘制开始菜单,以及何时为真,绘制游戏。 是的,因为它有很多代码,我会把它上传到pastebin。

PongWindow.java(包括main)http://pastebin.com/S5CpWW5Q

PongDrawing.java(包括绘图,移动,键盘操作,主游戏循环以及所有这些)http://pastebin.com/x2LxkkbP

PongPlayer.java(播放器)http://pastebin.com/N8VWTL0P

PongBall.java(球)http://pastebin.com/temGc2Yg

如果你们能弄明白为什么它不再听我的钥匙,请告诉我,我不知道。

1 个答案:

答案 0 :(得分:5)

  

就像KeyListener已停止工作一样,

键事件仅传递给具有焦点的组件。如果单击按钮,则游戏面板不再具有焦点。你需要使用类似的东西:

gamePanel.requestFocusInWindow();

在ActionListener代码中。

但是,正确的方法是忘记使用KeyListener,而是使用Key Bindings