关注java小程序

关注java小程序,java,applet,jframe,jpanel,Java,Applet,Jframe,Jpanel,我制作了一个完全基于JPanel的java游戏。当我将它添加到JFrame时,它工作得非常好;当我将它添加到JApplet并使用eclipse的内置applet tester进行测试时,它工作得非常好。但是,当我试图通过html站点运行小程序时,它不起作用。它加载,但不接受键盘输入。我把它设置在“按s”开始游戏的地方,但即使我点击游戏并按s,也不会发生任何事情 我是否必须设置键盘焦点,因为我认为这是自动完成的 但它不需要键盘输入 KeyEvents仅传递给具有焦点的组件。我猜您的面板没有焦点,因

我制作了一个完全基于JPanel的java游戏。当我将它添加到JFrame时,它工作得非常好;当我将它添加到JApplet并使用eclipse的内置applet tester进行测试时,它工作得非常好。但是,当我试图通过html站点运行小程序时,它不起作用。它加载,但不接受键盘输入。我把它设置在“按s”开始游戏的地方,但即使我点击游戏并按s,也不会发生任何事情

我是否必须设置键盘焦点,因为我认为这是自动完成的

但它不需要键盘输入

KeyEvents仅传递给具有焦点的组件。我猜您的面板没有焦点,因此请确保面板可聚焦,然后在GUI可见后使用requestFocusInWindow()方法以确保面板具有焦点

但是,更好的解决方案不是依赖于KeyListener,而是使用键绑定。Swing设计为使用键绑定


了解更多信息。

您在什么平台上使用什么浏览器?您是否测试过其他使用键盘排除浏览器问题的小程序?(您可以尝试使用键盘,但它基于AWT而不是Swing。)在我将面板添加到小程序后,在扩展JApplet的类中调用requestFocusInWindow()有效。非常感谢。而且,我一定会考虑在未来的关键听众上使用键绑定。“杰夫,那你为什么还没有接受这个答案呢?”我知道我应该只提到键绑定方法。太多的初学者认为这是一条简单的出路。对不起,我还没有接受你的答案,因为这是我在stackoverflow上的第一篇帖子,我不知道。我不会重写我的代码,在侦听器上使用键绑定,因为我只是作为第一步来设计这个游戏,我计划在它之后继续。我不想把时间浪费在返工那些已经有用的东西上。