トップページ > 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] |