キーの Pressed を検出する

Key Listener をサブクラス化して、キーの Pressed を検出します。

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

プログラムの作成

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

プログラムの説明

  1. Swing(スィング)を使ったプログラムの基本的な説明は Swing 色を設定して線を描く を参照して下さい。
  2. Listener を使う時は java.awt.event.* をインポートして下さい。
        import java.awt.*;
        import javax.swing.*;
        import java.awt.event.*;
    
        public class KeyPrese extends JFrame
        {
        
  3. Class のコンストラクタです。
    addKeyListener() で KeyListener をサブクラス化します。
    keyPressed() メソッドでキーの押し下げを検出して Console 画面に印字します。
        // Constructor
        KeyPrese()
        {   super("Key Pressed");
            setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            addKeyListener(
                new KeyAdapter()
                {   public void keyPressed(KeyEvent e)
                    {   System.out.println("Press: " + e.getKeyText(e.getKeyCode()));
                    }
                });
            setSize(200, 100);
            setVisible(true);
        }
        
  4. キーを識別して、何かの操作を行うときば、例えば次のようになります。
        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;
        } 
        
  5. KeyListener を implements したときのように、全てのインタフェースを実装する必要はありません。
    今回は keyPressed() だけを定義しています。

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