更改JPanel后Java新的Keylistener不起作用

时间:2015-04-11 18:25:53

标签: java keylistener

对于我的游戏我正在为学校编码我遇到以下问题:

当游戏开始时,它会将一个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完全不同

1 个答案:

答案 0 :(得分:0)

问题解决了。 为什么JPanel无法获得焦点。通过我的更新方法,我知道在每个刻度都确保我的JPanel是专注的。这解决了它,但我不明白为什么单个焦点请求是不够的。