【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定数はこちらを参考にしてください。
ディスカッション
コメント一覧
まだ、コメントがありません