2012-06-17 37 views
3

我正在尝试使用Java 1.4.2编程一个简单的游戏 它使用两个主屏幕,两个屏幕都使用JPanel。其中之一只有一个MouseListener和完美的作品;使用第一个,你可以打开第二个。第二个屏幕使用MouseListenerKeyListenermousePressed方法正常工作。但是,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(); 
} 

有谁知道为什么会这样?有人有建议吗?

感谢提前:)

+0

我的话非常困惑面板上调用requestFocsInWindow()。你的屏幕是什么意思?你是说有两个JFrames?并且都是同一场比赛的一部分?还发布代码,您创建非工作keylistener – ghostbust555

+0

每个屏幕是不同的JPanel。两者之间的可见性通过setVisible()更改,以在它们之间进行更改。他们都是同一场比赛的一部分;基本上,一个是“主菜单”,另一个是“主游戏”。 我在主构造函数中创建面板时创建keyListener。我已将它添加到原始问题中。 – TBMars

+0

好的。国际海事组织使用两个单独的jpanels这是一个很大的错误和不必要的(除非我仍然失去一些东西)。为什么不使用一个JPanel,然后在菜单或游戏上绘制它们并切换它们?这将消除你的听众问题,并成为更好的编码习惯 – ghostbust555

回答

相关问题