【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定数はこちらを参考にしてください。








ディスカッション
コメント一覧
まだ、コメントがありません