Shoeisha Technology Media

CodeZine(コードジン)

特集ページ一覧

Java入門 (5) - Swingにおけるイベント処理

作って覚えるJavaプログラミングのススメ 第5回

  • ブックマーク
  • LINEで送る
  • このエントリーをはてなブックマークに追加
2008/02/21 14:00

今回は、ボタンをクリックしたときなどの処理を行うための「イベント処理」について説明します。Java特有の「代理イベントシステム」の基礎を理解しましょう。

目次

はじめに

 多くのGUIを使ったプログラムでは、ユーザーの操作などに関する処理を「イベント」と呼ばれるものを利用して処理します。イベントというのは、さまざまなプログラムへのアクションに応じて発信される「信号」のようなものだと考えてください。例えば、ユーザーがマウスでボタンをクリックすると、それに対応するイベントが発生する。このイベントに応じて何らかの処理が実行される。そういう仕組みになっているわけです。

 GUIのプログラミングでは、このイベント処理が非常に重要となります。Javaに用意されているイベント処理の仕組みについて、ここでしっかりと理解しておきましょう。

対象読者

  • Javaに興味はある、けれどプログラミング経験がない、という人。
  • Javaに興味はある、けれど何から手をつければいいかわからない、という人。
  • Javaに興味はない、でも何でもいいからプログラミングをしたい、という人。

これまでの記事

Swingのイベントシステムとは?

 Swing(というよりJava全般)のイベントシステムは、一般に「代理イベント」方式(デリゲートイベント方式)と呼ばれています。イベントが発生したコンポーネントに代って、専用のクラスが処理を受け持つことからこう呼ばれています。

 イベント処理の基本は「イベントが発生すると、それに対応するメソッドが実行される」というものです。システムには、あらかじめ「こういうイベントが発生したら、このメソッドが呼び出される」というような処理の仕組みが組み込まれています。イベントに対応した処理をしたければ、それによって呼び出されるメソッドを用意し、その中に処理を記述しておけばよいわけです。

 しかし、この「コンポーネントの中に、イベントに対応するメソッドを用意しておく」というやり方は、すなわち「常にすべてのイベントが垂れ流されている」という状態であることになります。メソッドを書くだけでそれが呼び出されるということは、メソッドがあろうがなかろうが、常にすべてのイベントが発生し、「対応メソッドはないかな?」と探し続けているわけです。これはかなり無駄なやり方という気がします。また、後からイベントを追加するなどの拡張性にも乏しいと言えます。

 そこで、Swingではイベントの処理を行うための専用クラスを設け、これにイベント処理を代理させることにしました。コンポーネントでは、原則としてイベントは発生しません。イベント処理用のクラスがまったく組み込まれていない状態だと、何かイベントが発生しそうな操作をしても、そのコンポーネントではイベントが起こらないのです。そして、そのコンポーネントにイベント処理用のクラスを組み込むと、それに対応するイベントが発生するようになります。そしてイベントが発生したら、その処理用クラスに用意されているメソッドが呼び出される、というわけです。

 このイベントの処理を代理で行うクラスを「イベントリスナー」と言います。イベント処理を行う場合は、このイベントリスナーのクラスを定義し、そこに必要なメソッドを用意して処理を記述します。コンポーネントには、そのコンポーネントで利用可能なイベント用のイベントリスナーを組み込むためのメソッドが用意されており、これを使ってイベントリスナーのインスタンスを組み込みます。これで、そのコンポーネントでイベントが発生したら、組み込んだイベントリスナー内のメソッドが呼び出され、処理が実行されるようになるわけです。

Swingのコンポーネントでは、イベント処理のための「イベントリスナー」を組み込むと、そのイベントリスナーがイベント処理を代理で行うようになる。
Swingのコンポーネントでは、イベント処理のための「イベントリスナー」を組み込むと、そのイベントリスナーがイベント処理を代理で行うようになる。

  • ブックマーク
  • LINEで送る
  • このエントリーをはてなブックマークに追加

著者プロフィール

  • 掌田 津耶乃(ショウダ ツヤノ)

    三文ライター&三流プログラマ。主にビギナーに向けたプログラミング関連の執筆を中心に活動している。 ※現在、入門ドキュメントサイト「libro」、カード型学習サイト「CARD.tuyano.com」を公開中。またGoogle+プロフィールはこちら。

バックナンバー

連載:作って覚えるJavaプログラミングのススメ

もっと読む

All contents copyright © 2005-2019 Shoeisha Co., Ltd. All rights reserved. ver.1.5