2012年9月20日木曜日

JRubyでSwingを使ってみる




目標




JRubyを使ってJavaのGUIツールキットであるSwingを用いる.
これによってRubyでGUIプログラムを作成する.






動作環境




私が動作させた環境を以下に示します.
どれが関係あり,どれが関係ないかはよくわかってません.


  • Mac OS X 10.7.4(Lion)


  • Ruby 1.9.3


  • Jruby 1.6.8


  • java version 1.6.0_35






そもそもJRubyとは




JavaVM上でRubyを動かすソフトウェアである.JavaからRubyを呼び出すこともできるらしい.





JRubyの長所




JRubyには以下の長所がある(らしい)


  • Javaの豊富なライブラリが使える.


  • Java並みの速度でRubyで書いたプログラムが動く


今回は1つめ長所の恩恵にあずかることになりそうです.





JRubyをインストール




RVMを用いてインストールします.
以下のコマンドでインストールできます.



rvm install jruby-1.6.8










JRubyの使い方




ex.rb というRubyのプログラムをJRubyで動かすには以下のようにする.



jruby-1.6.8 ex.rb










swingを使ってみる




参考ページそのままのサンプルコードを動作させてみる.
上の方のimport文でswing関連のものをインポートしている.



require 'java'

import 'javax.swing.JFrame'
import 'javax.swing.JButton'
import 'javax.swing.JTextField'
import 'javax.swing.JPanel'
import 'java.awt.BorderLayout'

class ButtonAction
  include java.awt.event.ActionListener
  
  def initialize(text)
    @text = text
  end
  def actionPerformed(evt)
    @text.setText("Click")
  end
end


frame = JFrame.new("HOGE")
button = JButton.new("Click!!!")
text = JTextField.new(10)

button.add_action_listener(ButtonAction.new(text))

panel = JPanel.new
panel.add text
panel.add button
frame.getContentPane.add(panel, BorderLayout::CENTER)
frame.setDefaultCloseOperation(JFrame::EXIT_ON_CLOSE)
frame.pack
frame.visible = true










おわりに




とりあえず,動作することまでは確認.
これでRubyでGUIプログラムをつくることができそう.
他にもRubyでGUIプログラムをつくる方法があるのかもしれないけど,僕はまだ知らない.






--
My Emacs Files At GitHub