Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java密钥事件_Java_Swing_Awt_Keylistener_Keyevent - Fatal编程技术网

Java密钥事件

Java密钥事件,java,swing,awt,keylistener,keyevent,Java,Swing,Awt,Keylistener,Keyevent,我在想如何在按键时得到正确的通知时遇到了问题。处理多个键时,对于第一次按下的键,keyPressed方法似乎不会再次调用 示例:如果我按下向右箭头键并按住它,它会被反复调用(保持打印测试)。但是,如果我按下向右箭头键,然后在按住向右箭头键的同时按下空格键一次,只要松开空格键,keyPressed()方法似乎就不会被调用。(未打印任何内容) 这就是我的代码的样子: 按下公共无效键(按键事件e){ 系统输出打印(“测试”); 开关(如getKeyCode()){ case KeyEvent.VK_左

我在想如何在按键时得到正确的通知时遇到了问题。处理多个键时,对于第一次按下的键,
keyPressed
方法似乎不会再次调用

示例:如果我按下向右箭头键并按住它,它会被反复调用(保持打印测试)。但是,如果我按下向右箭头键,然后在按住向右箭头键的同时按下空格键一次,只要松开空格键,
keyPressed()
方法似乎就不会被调用。(未打印任何内容)

这就是我的代码的样子:

按下公共无效键(按键事件e){ 系统输出打印(“测试”); 开关(如getKeyCode()){ case KeyEvent.VK_左: 盖伊,左移(); 打破 case KeyEvent.VK_RIGHT: guy.moveRight(); 打破 case KeyEvent.VK_空间: 伙计,跳(); 打破 } }
欢迎来到关注键盘的精彩世界

假设您已将
KeyListener
附加到组件

为了让任何组件接收按键事件,它必须是可聚焦的,并且具有键盘焦点。当你想用它做游戏的时候,它会变得非常脆弱


相反,你应该利用这个机会。除了使编写键操作更容易之外,它还允许您指定在什么焦点条件下应触发各个事件。

谢谢,我将看一下键绑定。我已经做了一些键绑定,但其行为与以前完全相同。如果按下多个键,则焦点不会返回到释放最近一个键后仍在按下的上一个键。不要监听重复键事件,而是在键释放中放置一个标志或使用计时器和监视器,重置标志或停止计时器。我建议使用
javax.siwng.Timer