1

KeyPressed と KeyReleased で起動するように KeyListener を設定しようとしています。

たとえば、キーを押したままにすると、各イベントの print ステートメントから次の出力が得られます。

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");
    }



  }

何が起こっているのか誰にも分かりませんか?

4

1 に答える 1

2

KeyEvents はネイティブに登録されます。システムごとに変化します。Windows と Mac は「リピーター遅延」を使用し、リピーター量に基づいて n ミリ秒ごとに keyPressed イベントを再送信します。Ubuntu はこれをバイパスし、同じイベントを再送信する代わりに新しいイベントを再送信します。

リリース時に何が起こるかに応じて、プログラムにほとんどまたはまったく影響を与えないはずです。

于 2013-02-07T17:00:27.150 に答える