我制作了一个完全基于 JPanel 的 java 游戏。当我将它添加到 JFrame 时,它工作得很好,当我将它添加到 JApplet 并使用 eclipse 的内置小程序测试器测试它时,它工作得很好。但是,当我尝试通过 html 站点运行小程序时,它不起作用。它加载,但它不接受键盘输入。我将其设置为“按 s”开始游戏,但即使我点击游戏并按 s,也没有任何反应。
我是否必须设置键盘焦点,因为我认为这是自动完成的。
最佳答案
but it doesn't take keyboard input.
KeyEvents 仅传递给具有焦点的组件。我猜您的面板没有焦点,因此请确保您使面板可聚焦,然后在 GUI 可见时使用 requestFocusInWindow() 方法以确保面板具有焦点。
但是,解决该问题的更好方法是不依赖 KeyListener,而是使用 Key Bindings。 Swing 被设计为使用键绑定(bind)。
阅读更多关于 Key Bindings 的信息.
关于java - Java 小程序的焦点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4241489/