Swing入門 (3) - キーボード入力
1. 概要
キーボードの入力にあわせて表示させる文字列を変化させます。
2. 説明
ボタンの場合と同様に、リスナー(Listener)を追加(add)します。
前回と今回の違いは次の2点です。
(1) 呼び出すメソッド
前回:自身のメソッド
今回:スーパークラス( JFrame
)のメソッド
(2) 引数
前回:インターフェイス実装クラス
今回:インターフェイス実装クラスの継承クラス
具体的に見て行きます。
package swingsample; import java.awt.BorderLayout; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import javax.swing.JFrame; import javax.swing.JLabel; public class KeyboardSample extends JFrame { private final JLabel label = new JLabel(); public static void main(String[] args) { KeyboardSample mouseSample = new KeyboardSample(); } public KeyboardSample() { add(label, BorderLayout.CENTER); // キーボード入力に対する処理 addKeyListener(new KeyAdapter() { // (1) @Override public void keyPressed(KeyEvent e) { // (2) switch(e.getKeyCode()) { case KeyEvent.VK_UP: label.setText("(゚ - ゚)"); break; case KeyEvent.VK_DOWN: label.setText("(。 。)"); break; default: label.setText("(・_・)"); } } }); // ウィンドウの設定 addWindowListener(new WindowAdapter() { @Override public void windowClosing(WindowEvent e) { System.exit(0); } }); setSize(200, 100); setVisible(true); } }
補足
(1)について
前回のイベント処理(ボタンのクリック処理)では、
button.addActionListener(...)
と、button
のメソッドを呼び出す形でした。
今回はJFrame
クラスのメソッドなので、あえて書くならば
super.addKeyListener(...)
となります。
(2)について
addKeyListener
の引数となっているKeyAdapter
*1は、KeyListener
インターフェイス*2を実装したクラスです。
KeyListener
には複数のメソッドが定義されており、これらすべてを実装するのは冗長なので、
デフォルトの動作の定義されているクラスを継承して使おうというわけです。