Ruwing †目次 †概要 †Ruwing はjrubyからJavaFXライクな宣言型のDSLを用いてSwingを扱うライブラリです。 JavaFX同様に高速にSwingアプリケーションを組み立てることができます。例えば以下のようにコードすることで"Hello RubySwing!"と記述されたウィンドウを表示できます。 require 'java'
require 'ruwing'
include Ruwing
f = Frame {
title "Hello Ruwing !"
size 80,60
Label {
text "Hello Ruwing !"
}
}
f.visible = true
絶対に他にも作ってる人いるなと思ってたら案の定あった。。。 ダウンロード †チュートリアル †コンポーネントの記述方法 †Ruwing モジュールにはコンポーネント名と同名のメソッドが用意されています。このメソッドを呼び出すことでコンポーネントが作成することができます。コンポーネントのプロパティや子コンポーネント、イベント処理などはメソッドに渡すブロックに記述します。以下の例ではボタンが配置されたウィンドウが表示され、ボタンを押すとコンソールに"Hello!"と表示されます。 require 'java'
require 'ruwing'
include Ruwing
f = Frame{
title "Hello Ruwing"
size 100,60
Button{
label "Hello!"
on_action_performed {
puts "Hello!"
}
}
}
f.visible = true
イベント処理 †イベント処理のために多くのイベント処理用メソッドが定義されています。このメソッドにブロックを渡すことでイベント処理を定義することができます。例えばButtonコンポーネントにはon_action_performedというイベント処理用メソッドが定義されています。on_action_performedにブロックを渡すことでボタン押下字の処理を定義することができます。ブロックの中身はボタンが押下された時に評価されます。 Button押下字に文字列を表示する require 'java'
require 'ruwing'
include Ruwing
f = Frame{
title "Hello Ruwing "
size 100,60
Button{
label "Hello!"
on_action_performed {
puts "Hello!"
}
}
}
f.visible = true
イベント処理を行うブロックには対応するJavaのリスナーに定義されているEventオブジェクトが渡されます。このオブジェクト使用してマウスのクリック位置などの情報を取得できます。 マウスクリックとキータイプのイベント処理例 require 'java'
require 'ruwing'
include Ruwing
f = Frame {
title "Hello Ruwing!"
size 300,300
on_mouse_clicked{|e|
puts "x:#{e.x} y:#{e.y}"
}
focusable true
on_key_typed{|e|
puts "typed " + [e.key_char].pack("w")
}
}
f.visible = true
他のコンポーネントの参照 †コンポーネントには予め名前を付け、refメソッドを使用することで他のコンポーネントを参照することができます。コンポーネントにはメソッド呼び出し時にシンボルや文字列を渡すことで名前を付けることができます。 ボタンを押すとテキストフィールドの情報を表示する例 require 'java'
require 'ruwing'
include Ruwing
f = Frame {
title "Hello Ruwing!"
size 200,200
Panel {
layout nil
TextField(:tf) { # :tf で参照できるようにする
bounds 10,10,120,20
}
Button {
label "print"
bounds 10,50,80,40
on_action_performed {
puts ref[:tf].text # refで:tfのコンポーネントを参照
}
}
}
}
f.visible = true
使用できるプロパティ †RuwingはSwingコンポーネントのアクセサを使用しています。そのためSwingコンポーネントに定義されている全てのアクセサを使用できます。例えばsetXyz(int,int)というメソッドがSwingコンポーネントに定義されていれば、そのコンポーネントのブロックでxyz n,mと記述することで値を設定できます。 使用できるイベント †基本的なリスナーの多くが使用できます。使用できるリスナーとイベントの一部を以下に記述します。
拡張されたコンポーネント †Ruwingは利便性を考慮して新しいコンポーネントを追加しています。 Image †以下のコンポーネントを使用できます
|