トップページ > 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” と入力します。
//******************************************************************************
//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”
//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 |
| [←] | |
| [↑] | |
| [→] | |
| [↓] | |
| [Enter] | |
| [Space] | |
| [Shift] | |
| [Z] | |
| [X] |