SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

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

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

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

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

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

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

はじめに

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

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

対象読者

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

これまでの記事

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

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

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

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

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

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

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

会員登録無料すると、続きをお読みいただけます

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

次のページ
イベントリスナーとインターフェース

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加
作って覚えるJavaプログラミングのススメ連載記事一覧

もっと読む

この記事の著者

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

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

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/2194 2008/02/21 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング