キーボードの文字

  1. 目的
    ここでは、キーボード情報を取得する方法を紹介します。

  2. 利用法
    1. キーボードリスナの組み込み
       キーボードを操作したとき、実行されるメソッドを定義する方法はいくつかありますが、ここでは、アダプタクラスを利用した方法を説明します。キーボードのアダプタクラスには KeyAdapter() クラスあります。
       以下は、キーボードを押したときに呼び出される this_keyPressed(e); 、this_keyTyped(e) と、離したとき呼び出されるメソッド this_keyReleased(e); を定義します。

             this.addKeyListener(new java.awt.event.KeyAdapter() {
                public void keyPressed(KeyEvent e) {
                  this_keyPressed(e);
                }
                public void keyTyped(KeyEvent e) {
                  this_keyTyped(e);
                }
                public void keyReleased(KeyEvent e) {
                  this_keyReleased(e);
                }
              });

      this_keyTyped(e)は、文字鍵盤を押したときに呼び出され、シフトキーによる大文字、小文字も考慮します。一方、keyPressed は文字以外に、矢印キーやDeleteキーなどを押したときにも呼び出されます。大文字、小文字などのキーの組み合わせには対応しません。

    2. キーの押し下げ
       this_keyPressed(KeyEvent e)はキーを押し下げたとき呼び出されます。ここでは、String message にメッセージを記録し、paint() で、エッセージを表示します。 
       e.getKeyCode()で押されたキーに対応する仮想キーコードを取得できます。仮想キーコードでは下向き矢印を KeyEvent.VK_DOWN で表現します。他のキーについては、ドキュメントの KeyEvent クラスを参照して下さい。
          public void this_keyPressed(KeyEvent e){
              //非文字キーのみ処理        
              //System.out.println("keypressed:"+e.getKeyCode());
              message="keypressed:"+e.getKeyCode();
              if(e.getKeyCode()==KeyEvent.VK_DOWN)
              message="Down keypressed";
              repaint();
               //System.out.println("down");
          }

    3. 文字キーの押し下げ
      文字キーが押されると、keyTyped(KeyEvent e) が呼び出されます。e.getKeyChar() で文字コードを取得できます。ここでは、シフトキーなどの、復号キーにも対応しています。
       
    4. 注意
       同じフレームに GUI 部品が配置されていますと、キーイベントはそちらで「消費」されて、指定したメソッドは呼び出されません。
       キーイベントを直接利用する場合、GUI部品のないフレームを利用する必要があります。

  3. プログラム

    1. ソース
      import java.awt.Graphics;
      import java.awt.event.KeyEvent;
      import java.applet.Applet;
      
      public class key extends Applet{
      
          String message="";
          
          public void  init(){
              
              this.addKeyListener(new java.awt.event.KeyAdapter() {
                public void keyPressed(KeyEvent e) {
                  this_keyPressed(e);
                }
                public void keyTyped(KeyEvent e) {
                  this_keyTyped(e);
                }
                public void mouseReleased(KeyEvent e) {
                  this_keyReleased(e);
                }
              });
          }
          
          public void paint(Graphics g){
              g.drawString(message,20,50);
          }
      
          public void this_keyPressed(KeyEvent e){
              //非文字キーのみ処理        
              //System.out.println("keypressed:"+e.getKeyCode());
              message="keypressed:"+e.getKeyCode();
              if(e.getKeyCode()==KeyEvent.VK_DOWN)
              message="Down keypressed";
              repaint();
               //System.out.println("down");
          }
          
          public void this_keyTyped(KeyEvent e){
              //文字キーの処理
              //System.out.println("keytyped:"+e.getKeyChar());
              message="keyyped:"+e.getKeyChar();
              repaint();
          }
          
          public void this_keyReleased(KeyEvent e){
              
          }
      
      }

    2. 実行
       キーを押すとメッセージと文字が表示されます。文字キーとそれ以外のキーでは表示が異なることに注意してください。