【Java】キー入力処理
本稿はJavaでキー入力処理を実装してみます。
キー入力の方法には、KeyListenerを実装し、メソッドをオーバーライドして利用する方法とenableEventsで有効化し、processKeyEventメソッドをオーバーライドする方法があります。
今回は、KeyListenerをJFrameに実装して、キー入力する方法を紹介していきます。
キー入力処理の実装
キー入力を有効化するにはKeyListenerを実装し、JFrame等のaddKeyListenerを呼び出しましょう。
まずは、KeyListenerの実装ですが、keyPressed、keyReleased、keyTypedのメソッドをオーバーライドしましょう。使用するのはkeyPressed、keyReleasedのみで問題ありません。
keyPressedメソッドはキーを押した時に呼び出されるメソッドで、keyReleasedがキーが離された時に呼び出されるメソッドです。
そして、どのキーが入力されたかはKeyEventのgetKeyCodeで値を取得し、KeyEventの定数と比較しましょう。
それでは実装サンプルをご覧ください。
import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import javax.swing.JFrame; public class Test{ public static void main(String[] args) { TestWindow gw = new TestWindow("テストウィンドウ",400,300); gw.setVisible(true); } } class TestWindow extends JFrame implements KeyListener{ public TestWindow(String title, int width, int height) { super(title); setDefaultCloseOperation(EXIT_ON_CLOSE); setSize(width,height); setLocationRelativeTo(null); setLayout(null); setResizable(false); //キー入力の有効化 addKeyListener(this); } @Override public void keyTyped(KeyEvent e) { //使用しないので空にしておきます。 } @Override public void keyPressed(KeyEvent e) { switch ( e.getKeyCode() ) { case KeyEvent.VK_UP: //上キー System.out.println("上が押されました"); break; case KeyEvent.VK_SPACE: //スペースキー System.out.println("スペースが押されました"); break; case KeyEvent.VK_ENTER: //エンターキー System.out.println("Enterが押されました"); break; } } @Override public void keyReleased(KeyEvent e) { switch ( e.getKeyCode() ) { case KeyEvent.VK_UP: //上キー System.out.println("上が離されました"); break; case KeyEvent.VK_SPACE: //スペースキー System.out.println("スペースが離されました"); break; case KeyEvent.VK_ENTER: //エンターキー System.out.println("Enterが離されました"); break; } } }
上が押されました
上が離されました
Enterが押されました
Enterが離されました
スペースが押されました
スペースが離されました
実行後に上キー、Enterキー、スペースキーを押してみると上記の結果になりました。
各種キーコードの比較はKeyEvent.VK_~の定数を利用すると他のキーでも判断可能です。
KeyEvent定数はこちらを参考にしてください。
ディスカッション
コメント一覧
まだ、コメントがありません