我做了一个基于JPanel的java游戏。当我将它添加到JFrame时,它可以完美地工作,当我将它添加到JApplet并使用eclipse的内置applet测试器进行测试时,它可以完美地工作。但是,当我尝试通过HTML网站运行applet时,它不起作用。它加载,但它不需要键盘输入。我设置“按s”开始游戏,但即使我点击游戏并按下s,也没有任何反应。
我是否必须设置键盘焦点,因为我认为这是自动完成的。
答案 0 :(得分:1)
但它不接受键盘输入。
KeyEvents仅传递给具有焦点的组件。我猜你的面板没有焦点,所以一定要让面板可以聚焦,然后在GUI可见时使用requestFocusInWindow()方法,以确保面板具有焦点。
然而,问题的更好解决方案不是依赖KeyListener而是使用Key Bindings。 Swing旨在使用Key Bindings。
详细了解Key Bindings。