« われわれはなぜ弱いものの味方であるのか?弱き「わたし」胸に | トップページ | 成果が出なければ10年後にクビにしてもらっても 山中伸弥 »

2010年2月16日 (火)

JRubyの勉強11Javaの勉強8

http://hokage.cocolog-nifty.com/eyesonly/2009/11/jruby10java7-08.html

の続き

「Java GUIプログラミング vol.1」(カットシステム)は、Javaのswingを使ってGUIをつくる教本かと思うが、JRubyでJavaのswingを使ってGUIプログラムの作成を試みた。

これまで、Javaのswingを使ってJavaで円グラフのプログラムをつくり、これをjarファイル化し、JRubyでデータを与え呼び出すことをやっていた。これは今でも進めている。

Javaのswingで作ったGUIでユーザから情報を得て、JRubyで処理したいと考えたのだが、これだと、JavaのプログラムからJRubyのプログラムを呼び出す形になるかと思う。ユーザが入力したというイベントのリスナーの応答で、何らかのJRubyプログラムが発動する必要があるので、単にJava側のプログラムから、ユーザーから入力されたデータを持つオブジェクトをJRuby側のプログラムで受け取るだけでは済まないのである。イベントドリブンと言うのだろうかGUIでは、どうしてもGUIプログラムの中でプログラム呼び出しが必要になる。

JavaのプログラムからJRubyのプログラムを呼び出すこともできるらしいのだが、正直面倒だ。またJRubyの動作環境がないと、動かないJavaプログラムが自作のJavaライブラリにあるのが、個人的に気にいらない。実際、これまでJRubyで呼び出して使う目的の自作Javaの円グラフ描画クラス等は、そのままJavaプログラムから呼び出しても使えるものだった。

一方、JRubyの方は、そもそもJavaの動作環境が前提で、swingなどのJavaクラスも簡単に使えるのだから、最低限のこうした目的のプログラムはJRubyでJavaのswingを使って作ってしまいたいと考えた。すなわち、このGUIは私のJRubyのプロジェクトのライブラリとなるのだ。

ネットで情報を集めて、結構、苦労したのだが「Java GUIプログラミング vol.1」(カットシステム)の331ページのDialogTest05A.javaをJRubyで書き直すことができた。

メインプログラムファイル

Dialog_test_05_main

クラスプログラムファイル

Dialog_test_05

である。

クラスプログラムファイルの18行目の p ans.to_a がJavaのSystem.out.print(ans); に相当するので、ここにユーザから入力されたansに応じた、JRubyプログラムをJRubyクラスを呼び出すなりして、作成すれば良いことになる。

ネットで調べると、もっとJRubyらしい、あるいは最新のswingらしいプログラムの書き方があるようなのだが、可能な限り元のJavaプログラムに近い形にしてみた。これも1つの参考かと少し自負している。

|

« われわれはなぜ弱いものの味方であるのか?弱き「わたし」胸に | トップページ | 成果が出なければ10年後にクビにしてもらっても 山中伸弥 »

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/39491/47585417

この記事へのトラックバック一覧です: JRubyの勉強11Javaの勉強8:

« われわれはなぜ弱いものの味方であるのか?弱き「わたし」胸に | トップページ | 成果が出なければ10年後にクビにしてもらっても 山中伸弥 »