SHOEISHA iD

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

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

Javaで軽快に使える「軽量フレームワーク」特集

Javaで軽快に使える「軽量フレームワーク」特集
~クールなGUIをシンプルなスクリプトで作成するZK(3)

第22回

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

ZIndex変更時のイベント処理

 このスクリプトではもう1つ、「ウインドウを閉じる」ための処理が用意されています。これは、メニューを選んだら、1番手前にあるWindowの「onClose」メソッドを呼び出してウインドウを閉じる、というものです。問題は、どうやって1番手前にあるウインドウを知るかということです。いろいろやり方は考えられますが、ここでは「ZIndex変更時のイベント」を利用することにしました。

 ZIndexは、コンポーネントの重なり順を示すプロパティです。ウインドウをクリックして1番手前になると、必ずこのイベントが発生します。これを利用し、ZIndexが変更されるイベントが発生したら、そのイベント発生源となるコンポーネントを、1番手前に移動したコンポーネントとして変数selectedWindowに保管するようにしておく、というわけです。こうすれば、selectedWindowには常に1番手前のWindowが保管されることになります。

 イベントの組み込みは、Windowインスタンスを作成したところで行っています。これは「addEventListener」というメソッドを利用します。

mywindow.addEventListener("onZIndex",new MyAdapter());

 ZKのイベント処理は、Swingなどと同様にデリゲーションイベントモデルを採用しています。しかし、Swingなどのようにイベントリスナーが細分化されているわけではありません。イベントリスナーは「EventListener」というクラス1つだけで、組み込みも「addEventListener」があるのみです。

 ではどうやってイベントの区別をするのかと言うと、addEventListner時に、組み込むイベント名とイベントリスナーをそれぞれ引数に指定しておくのです。例えば、ここでは"onZIndex"というイベントに、MyAdapterを組み込んでいます。このようにして、特定のイベントにイベントリスナーを割りつけるようになっています。

 肝心のイベントリスナーですが、これはEventListenerをimplementsして作成します。クラスには、「doEvent」というメソッドを1つ用意します。

class MyAdapter implements EventListener {
  public void onEvent(Event event){
    selectedWindow = event.getTarget();
  }
}

 onEventでは発生したイベントの情報をまとめたEventクラスのインスタンスが渡されます。この「getTarget」メソッドにより、イベントが発生したコンポーネントを取得できます。ここでは、この値をselectedWindowに設定しています。ZKには、onZIndex以外にも各種のイベントが用意されており、すべてこれと同様にして処理を組み込むことができます。

JavaDBへのアクセス

 最後に、ZKからデータベースにアクセスする方法について整理します。ZKには、データベースアクセスのための特別な機能は用意されていません。しかし、ZKは一般的なWebアプリケーションのようにクライアントとサーバにわかれて設計せず、普通のアプリケーションと同じ感覚でプログラムを設計できます。従って、ごく普通のアプリケーションと同じ感覚で、データベースアクセス用のクラスを作成し、それを必要に応じて呼び出して処理すれば良いのです。

 では、サンプルとして、Javaに付属するJavaDBを利用してデータベースアクセスする例を考えてみましょう。JavaDBは、JDK/JREとは別のディレクトリにインストールされています(通常、C:\Program Files\Sun\JavaDB)。データベースを操作する場合には、インストールディレクトリ内の「bin」内にある「ij.bat」を利用するのが良いでしょう。これを起動すると、コマンドプロンプト・ウインドウが開き、JavaDBのコマンドを直接実行できるようになります(なお、そのまま起動すると、JavaDBのログファイルの出力に失敗するエラーが現れることがあります。このような場合には、管理者としてij.batを実行してください)。

 起動したら、まずデータベースファイルに接続します。JavaDBでは、データベースサーバとしてJavaDBを起動し、それに接続する方式と、直接データベースファイルにアクセスする方式があります。ここでは扱いが簡単な後者の方式を利用します。ここでは、Cドライブ直下に「DerbyDatabases」というフォルダを用意し、この中に「sampledata」というデータベースファイルを作成して利用することにしましょう。ij.batのコマンドプロンプト・ウインドウで、次のように実行し、C:\DerbyDatabases\sampledataというデータベースファイルを作成して接続してください。

connect 'jdbc:derby:C:\DerbyDatabases\sampledata;create=true';

 続いて、簡単なテーブルを作成しておきましょう。name,mail,telといった項目を持つSampleRowDataテーブルを作成します。

create table SampleRowData (name varchar(10) primary key,mail varchar(30),tel varchar(20));

 ダミーのデータも次のようにいくつか用意しておきます。

insert into SampleRowData values ('tuyano','tuyano@mac.com','090-9999-9999');
insert into SampleRowData values ('太郎','taro@yamada.com','080-8888-8888');
insert into SampleRowData values ('花子','hanako@tanaka.com','070-7777-7777');

 作成後、「select * from SampleRowData;」でデータが保管されていることを確認してから、ij.batを終了してください。とりあえず、これでサンプルのテーブルは用意できました。

ij.batを起動し、サンプルのデータベースファイルにテーブルを用意する
ij.batを起動し、サンプルのデータベースファイルにテーブルを用意する

次のページ
DAOクラスの作成

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

  • X ポスト
  • このエントリーをはてなブックマークに追加
Javaで軽快に使える「軽量フレームワーク」特集連載記事一覧

もっと読む

この記事の著者

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

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

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

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

この記事をシェア

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

おすすめ

アクセスランキング

アクセスランキング

イベント

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

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

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

メールバックナンバー

アクセスランキング

アクセスランキング