Javaプログラミング/Javaの基本

マウスとキーボードのイベント処理(4ページ目)

今回は、GUIアプリケーションで必要となるマウスとキーボードのイベント処理について説明しましょう。

執筆者:掌田 津耶乃

キーボードのイベント処理


続いて、キーボードのイベント処理です。これは「KeyListener」というインターフェイスとして用意されています。これの定義は以下のようになります。

class クラス名 implements KeyListener {

  @Override
  public void keyPressed(KeyEvent ev) { ……処理…… }

  @Override
  public void keyReleased(KeyEvent ev) { ……処理…… }

  @Override
  public void keyTyped(KeyEvent ev) { ……処理…… }

}


キーボード関係の処理はKeyListenerで行います。このインターフェイスには、キーを押したときのイベント「keyTyped」と、キーを押し下げたり離したりしたときのイベント「keyPressed」「keyReleased」が用意されています。

似たようなものが用意されていますが、keyPressed/keyReleasedはキーの上げ下げに反応するのに対し、keyTypedはキーをタイプする(押して離す)際に発生するものです。両者は似ていますが微妙に違います。例えば、ShiftキーやCtrlキーのような機能キーの類は、押してもkeyTypedイベントは発生しませんが、keyPressed/keyReleasedイベントは発生します。

引数に渡されるKeyEventは、キーイベントに関する情報を管理するクラスです。ここでは、「getKeyChar」というメソッドでイベントが発生したキーの文字を取り出すことができます。また、「getKeyCode」で、キーのコード番号を取り出すことも可能です。

マウスイベントと同様、キーボードのイベントにもアダプタクラスは用意されています。「KeyAdapter」というもので、これを継承してイベント処理を作成することも可能です。

では、これも簡単なサンプルを作成しましょう。FrameにLabelを1つ用意し、キーをタイプすると、その文字がLabelに表示されていくようなものを考えてみます。

package jp.allabout;

import java.awt.*;
import java.awt.event.*;
import java.util.*;

public class SampleApp extends Frame {
  private Label label;

  public static void main(String[] args) {
    new SampleApp().setVisible(true);
  }
  
  public SampleApp(){
    label = new Label();
    label.setFont(new Font(Font.SERIF,Font.PLAIN,24));
    this.add(label,BorderLayout.CENTER);
    this.addKeyListener(new MyKeyAdapter());
    this.setSize(300,100);
  }
  
  class MyKeyAdapter extends KeyAdapter {

    @Override
    public void keyTyped(KeyEvent ev) {
      super.keyTyped(ev);
      String s = label.getText();
      label.setText(s + ev.getKeyChar());
    }
    
  }
  
}

キーをタイプすると文字が表示されていく。

ここでは、extends KeyAdapterしてイベント処理クラスを作成しました。keyTypedメソッドで、label.getTextでLabelのテキストを取り出し、それにev.getKeyChar()で取り出したキーの文字を付け加えて再びlabel.setTextしています。
  • 前のページへ
  • 1
  • 3
  • 4
  • 5
  • 次のページへ

あわせて読みたい

あなたにオススメ

    表示について

    カテゴリー一覧

    All Aboutサービス・メディア

    All About公式SNS
    日々の生活や仕事を楽しむための情報を毎日お届けします。
    公式SNS一覧
    © All About, Inc. All rights reserved. 掲載の記事・写真・イラストなど、すべてのコンテンツの無断複写・転載・公衆送信等を禁じます