我试图设置一个KeyListener来触发KeyPressed和KeyReleased。
当我按住某个键时,如果按下后立即触发释放,例如,如果我按住某个键,我会从每个事件的打印语句中获得此输出:
Pressed
Released
Pressed
Released
Pressed
Released
Pressed
Released
这是我的KeyListener
import java.awt.Dimension;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JFrame;
public class EventListener extends JFrame implements KeyListener {
public EventListener() {
super();
setSize(new Dimension(200, 300));
addKeyListener(this);
setVisible(true);
}
@Override
public void keyTyped(KeyEvent e) {
}
@Override
public void keyPressed(KeyEvent e) {
System.out.println("Pressed");
}
@Override
public void keyReleased(KeyEvent e) {
System.out.println("Released");
}
}
有谁知道发生了什么事?
答案 0 :(得分:2)
KeyEvents是本地注册的。逐个系统将改变。 Windows和Mac使用“转发器延迟”,它根据转发器数量每n毫秒重新发送一次keyPressed事件。 Ubuntu绕过这个并重新发送一个新事件而不是重发同一个事件。
它应该对您的程序几乎没有影响,具体取决于发布时会发生什么。