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で書き直すことができた。
メインプログラムファイル
クラスプログラムファイル
である。
クラスプログラムファイルの18行目の p ans.to_a がJavaのSystem.out.print(ans); に相当するので、ここにユーザから入力されたansに応じた、JRubyプログラムをJRubyクラスを呼び出すなりして、作成すれば良いことになる。
ネットで調べると、もっとJRubyらしい、あるいは最新のswingらしいプログラムの書き方があるようなのだが、可能な限り元のJavaプログラムに近い形にしてみた。これも1つの参考かと少し自負している。
| 固定リンク




コメント