【发布时间】:2012-06-19 23:48:07
【问题描述】:
我正在尝试使用 Java 1.4.2 编写一个简单的游戏
它使用两个主屏幕,两者都使用JPanel。其中一个只有MouseListener 并且工作完美;使用第一个,您可以打开第二个。第二个屏幕使用MouseListener 和KeyListener。 mousePressed 方法工作正常。但是,keyPressed 方法起初不起作用;为了让它工作,我必须最小化窗口,然后在它工作之前再次重新选择它。
在第一个屏幕中,我被建议在打开第二个屏幕时输入toFront() 命令;即secondFrame.toFront() 但是,它给了我一个错误,说No method "toFront()" was found in type "secondFrame"- 即使secondFrame 扩展JPanel。
我听说过一些关于“键绑定”的信息;我不熟悉这个话题,但我宁愿从核心解决这个问题,而不仅仅是求助于解决方法。如果可能的话,我想在仍然使用KeyListener 的同时解决这个问题。
代码片段:
public TowerDefenceBoard{
(generic stuff)
setFocusable (true);
addKeyListener (this);
requestFocusInWindow ();
}
有人知道为什么会这样吗?有人有什么建议吗?
提前谢谢:)
【问题讨论】:
-
我对此感到非常困惑。屏幕是什么意思?你是说有两个JFrame?两者都是同一个游戏的一部分?还要发布您创建非工作 keylistener 的代码
-
每个屏幕都是不同的 JPanel。两者之间的可见性通过 setVisible() 来改变它们之间的变化。他们都是同一个游戏的一部分;基本上,一个是“主菜单”,另一个是“主游戏”。我在主构造函数中创建面板时创建了 keyListener。我已将其添加到原始问题中。
-
好的。 IMO 为此使用两个单独的 jpanel 是一个很大的错误并且是不必要的(除非我仍然缺少某些东西)。为什么不只使用一个 JPanel,然后在其上绘制菜单或游戏并切换它们呢?这将消除您与听众的问题,并成为更好的编码实践
标签: java keylistener