トップページ > Java3D入門 > Javaのキーボード入力(2)

押されたキーを判別する

キーコードについて

キーボード上のキーには、1つ1つに「キーコード」が定められています。 押されたキーのキーコードを取得するには、“getKeyCode()”メソッドを使います。 キーコードはint型の整数で、getKeyCode()を呼ぶと返数として返ってきます。 その値からどのキーが押されたかを判別することになります。

getKeyCode()メソッドはKeyEventクラスの中に定義されています。 このKeyEventクラスは、“keyPressed(KeyEvent event)”のように キーボードのイベントに関わるメソッドの引数となっていました。 (前ページのテストプログラム参照) キーボードが押された場合など、何らかのイベントが発生した場合は自動的に このKeyEventクラスが生成されてkeyPressed()やkeyReleased()に引数として渡されます。 プログラムを書く際は、KeyEventクラスの管理については意識する必要はありません。

今回のテストプログラムですが、今後使いまわすことを考えてmain()メソッドを含むメインクラスと 単にキーボード入力だけを管理するキーボード入力クラスとに分けてしまいます。 メインの“key_test2.java”というファイルと、キーボード処理のための“key_input.java”というファイルを 別々に保存します。コンパイルは両方行い、プログラムを起動するときは“java Key_test2” と入力します。

ソースコード : Key_test2.java

//******************************************************************************
//Java3D キーボード入力テスト
//キーボード入力を表示
//******************************************************************************


//==============================================================================
//インポート・ファイル
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;


//==============================================================================
//メイン・クラス
//==============================================================================
public class Key_test2
{

 //=============================================================================
 //メイン・メソッド
 public static void main(String[] args)
 {
  Key_test2 test = new Key_test2();
 }

 //=============================================================================
 //コンストラクタ
 public Key_test2()
 {
  //============================================================================
  //まずは、基礎フレームの設定。
  //============================================================================
  JFrame frame = new JFrame();
  frame.setSize(250,250);
  frame.setTitle("Key_test2");
  frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  frame.setVisible(true);

  //============================================================================
  //キーボード・リスナーの設定
  //============================================================================

  //フレームにキーボード入力の受信を登録
  frame.addKeyListener(new key_input());

 }
}
//ソースコードここまで。
//******************************************************************************

ソースコード : key_input.java

//******************************************************************************
//キーボード入力のためのクラス“key_input”
//KeyListenerを実装
//以下のメソッドを実装する必要があります。(使わなくても必要)
//keyPressed():キーボードが押された時に呼ばれる
//keyReleased():キーボードが押された状態から、離した時に呼ばれる
//keyTyped():キーボードがタイプされたときに呼ばれる
//登録の際は、“addKeyListener()”を使う
//******************************************************************************


//インポート
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;


public class key_input implements KeyListener
{

 //=============================================================================
 //クラスのフィールド
 //=============================================================================
 //キーコードを入れる変数
 int KeyCode;


 //=============================================================================
 //キーが押されたときに呼ばれるメソッド
 //=============================================================================
 public void keyPressed(KeyEvent event)
 {
  //キーコード取得
  KeyCode = event.getKeyCode();

  //画面に表示
  System.out.println("「" + KeyCode + "」が押されました。");
 }


 //=============================================================================
 //キーが離されたときに呼ばれるメソッド
 //=============================================================================
 public void keyReleased(KeyEvent event)
 {
  //キーコード取得
  KeyCode = event.getKeyCode();

  //画面に表示
  System.out.println("「" + KeyCode + "」が離されました。");
 }


 //=============================================================================
 //キーがタイプされたときに呼ばれるメソッド
 //=============================================================================
 public void keyTyped(KeyEvent event)
 {
  //何もしない
 }

}
//******************************************************************************
//key_inputクラスここまで
//******************************************************************************

実行画面

例のごとく、ただ表示しているだけのウィンドウです。キーボードの入力はこのウィンドウに 受信させているので、このウィンドウをアクティブにしておく必要があります。

押したキーに対応したKeyCodeが表示されます。今後、キーボードの入力に応じた処理を記述したい時は、 今回の“key_input”クラスを雛型として使用していくことにします。 KeyCodeをswitch文で判別して処理を分岐…など、よく使われる手法です。 以下に、ゲーム等でよく使うと 思われるキーのKeyCodeをまとめておきます。

キーKeyCode
[←]
37
[↑]
38
[→]
39
[↓]
40
[Enter]
10
[Space]
32
[Shift]
16
[Z]
90
[X]
88



前へ   次へ