对于我的游戏我正在为学校编码我遇到以下问题:
当游戏开始时,它会将一个JPanel加载到框架中并带有一些介绍内容。为了在一些图像之间切换,我添加了一个简单的keylistener。完成所有操作后,它会从contentpane中删除所有内容并加载第一级。这些行是为我做的:
frame.getContentPane().removeAll();
frame.getContentPane().add(new level1());
frame.getContentPane().validate();
现在,我的第一个级别已成功加载,但是keylistener已损坏。在我的公共level1()中,我已经定义了一个新的KeyListener,但它没有响应我的输入。如果我不切换JPanel,KeyListener将完全正常工作。重新加载新KeyListener的相关代码是:
this.requestFocusInWindow();
keylistener = new AL();
addKeyListener(keylistener);
一切正常,例如敌人正在移动。但是KeyListener没有做任何事情。
编辑:两个keylisteners完全不同
答案 0 :(得分:0)
问题解决了。 为什么JPanel无法获得焦点。通过我的更新方法,我知道在每个刻度都确保我的JPanel是专注的。这解决了它,但我不明白为什么单个焦点请求是不够的。