Java KeyListener - 键被关闭时释放的键被释放

时间:2013-02-07 14:36:27

标签: java swing jframe keylistener

我试图设置一个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");
    }



  }

有谁知道发生了什么事?

1 个答案:

答案 0 :(得分:2)

KeyEvents是本地注册的。逐个系统将改变。 Windows和Mac使用“转发器延迟”,它根据转发器数量每n毫秒重新发送一次keyPressed事件。 Ubuntu绕过这个并重新发送一个新事件而不是重发同一个事件。

它应该对您的程序几乎没有影响,具体取决于发布时会发生什么。