キーのイベントを検出する

KeyListener を implements して、キーのイベントを検出します。

前田稔の超初心者のプログラム入門

プログラムの作成

  1. メモ帳などでタイプして KeyTest.java の名前で保存して下さい。
    //★ Key Event を検出する    前田 稔
    import java.awt.*;
    import javax.swing.*;
    import java.awt.event.*;
    
    public class KeyTest extends JFrame implements KeyListener
    {
        // Main
        public static void main(String args[])
        {   new KeyTest();
        }
    
        // Constructor
        KeyTest()
        {   super("Key Down");
            setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            addKeyListener(this);
            setSize(200, 100);
            setVisible(true);
        }
    
        // KeyEvent Listener
        public void keyPressed(KeyEvent e)
        {   System.out.println("Press: " + e.getKeyText(e.getKeyCode()));
        }
        public void keyReleased(KeyEvent e) { }
        public void keyTyped(KeyEvent e)    { }
    }
    
  2. java のソースファイルをコンパイルして class オブジェクトを実行して下さい。
    ウインドウをアクティブにして、キーを押すと DOS 画面にメッセージを表示します。

プログラムの説明

  1. Swing(スイング)を使ったプログラムの基本的な説明は Swing 色を設定して線を描く を参照して下さい。
  2. Listener を使う時は java.awt.event.* をインポートして下さい。
    implements KeyListener で KeyListener を実装します。
        import java.awt.*;
        import javax.swing.*;
        import java.awt.event.*;
    
        public class KeyTest extends JFrame implements KeyListener
        {
        
  3. Class のコンストラクタです。
    addKeyListener(this) で、現在の Object Class を Listener に関連付けます。
        // Constructor
        KeyTest()
        {   super("Key Down");
            setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            addKeyListener(this);
            setSize(200, 100);
            setVisible(true);
        }
        
  4. KeyEvent Listener のメソッドです。
    キー操作で発生するイベントには、次のようなものがあります。
    keyPressed() を検出して、getKeyText(e.getKeyCode()) でキーの名前を Console 画面に印字しています。
        // KeyEvent Listener
        public void keyPressed(KeyEvent e)
        {   System.out.println("Press: " + e.getKeyText(e.getKeyCode()));
        }
        public void keyReleased(KeyEvent e) { }
        public void keyTyped(KeyEvent e)    { }
        
  5. キーを識別して、何かの操作を行うときば、例えば次のようになります。
        switch(e.getKeyCode( ))
        {   case KeyEvent.VK_UP : y=y-10; break;
            case KeyEvent.VK_DOWN : y=y+10; break;
            case KeyEvent.VK_LEFT : x=x-10; break;
            case KeyEvent.VK_RIGHT : x=x+10; break;
        } 
        

【演習】

  1. keyReleased() でキーの名前を Console 画面に印字して下さい。
  2. keyTyped() で入力されたキーを Console 画面に印字して下さい。
    System.out.println("Type: " + e.getKeyChar());

【NOTE】

Listener とは、イベント監視しイベント発生時に対応するアクションを実行するオブジェクトです。
KeyListener を実装するには、必要の有無に関わらず全てのインタフェースを実装する必要があります。
・public void keyPressed(KeyEvent e) { }
・public void keyReleased(KeyEvent e) { }
・public void keyTyped(KeyEvent e) { }

この面倒を簡略するために、インタフェースを複数持つものについてはアダプターが用意されています。
KeyListener をサブクラスとして定義することにより、必要なインタフェースのみを実装することが可能になります。
KeyListener をサブクラス化する方法は キーの Pressed を検出する を参照して下さい。

超初心者のプログラム入門(Java2)