我正在尝试使用Java 1.4.2编程一个简单的游戏 它使用两个主屏幕,两个屏幕都使用JPanel
。其中之一只有一个MouseListener
和完美的作品;使用第一个,你可以打开第二个。第二个屏幕使用MouseListener
和KeyListener
。 mousePressed
方法正常工作。但是,keyPressed
方法一开始不起作用;为了使它工作,我必须尽量减少窗口,然后再重新选择它才能工作。如何让KeyListener在最大化和最小化框架的情况下工作?
在第一个屏幕中,我建议在打开第二个屏幕时输入toFront()
命令;即secondFrame.toFront()
但是,它给了我一个错误,说No method "toFront()" was found in type "secondFrame"
- 即使secondFrame
延伸JPanel
。
我听说过一些关于“Key Bindings”的信息;我对这个话题不熟悉,但我宁愿解决这个问题的核心问题,而不仅仅是解决问题。如果可能的话,我想解决这个问题,同时仍然使用KeyListener
。
代码片段:
public TowerDefenceBoard{
(generic stuff)
setFocusable (true);
addKeyListener (this);
requestFocusInWindow();
}
有谁知道为什么会这样?有人有建议吗?
感谢提前:)
我的话非常困惑面板上调用
requestFocsInWindow()
。你的屏幕是什么意思?你是说有两个JFrames?并且都是同一场比赛的一部分?还发布代码,您创建非工作keylistener – ghostbust555每个屏幕是不同的JPanel。两者之间的可见性通过setVisible()更改,以在它们之间进行更改。他们都是同一场比赛的一部分;基本上,一个是“主菜单”,另一个是“主游戏”。 我在主构造函数中创建面板时创建keyListener。我已将它添加到原始问题中。 – TBMars
好的。国际海事组织使用两个单独的jpanels这是一个很大的错误和不必要的(除非我仍然失去一些东西)。为什么不使用一个JPanel,然后在菜单或游戏上绘制它们并切换它们?这将消除你的听众问题,并成为更好的编码习惯 – ghostbust555