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と記述することで値を設定できます。

使用できるイベント

基本的なリスナーの多くが使用できます。使用できるリスナーとイベントの一部を以下に記述します。

  • ActionListener
    • on_action_performed
  • WindowListener
    • on_window_closed
    • on_window_closing
    • on_window_activated
    • on_window_deactivated
    • on_window_deiconified
    • on_window_iconified
    • on_window_opened
  • KeyListener
    • on_key_pressed
    • on_key_released
    • on_key_typed
  • MouseListener
    • on_mouse_clicked
    • on_mouse_entered
    • on_mouse_exited
    • on_mouse_pressed
    • on_mouse_released
  • MouseMotionListener
    • on_mouse_dragged
    • on_mouse_moved
  • MouseWheelListener
    • on_mouse_wheel_moved
  • ComponentListener
    • on_component_hidden
    • on_component_moved
    • on_component_resized
    • on_component_shown
  • InputMethodListener
    • on_caret_position_changed
    • on_input_method_text_changed
  • FocusListener
    • on_focus_gained
    • on_focus_los
  • HierarchyBoundsListener
    • on_ancestor_moved
    • on_ancestor_resized
  • HierarchyListener
    • on_hierarchy_changed
  • ContainerListener
    • on_component_added
    • on_component_removed
  • PropertyChangeListener
    • on_property_change

拡張されたコンポーネント

Ruwingは利便性を考慮して新しいコンポーネントを追加しています。

Image

以下のコンポーネントを使用できます

  • Image 画像を表示
  • ScalableImage コンポーネントサイズに合わせて伸縮させて画像を表示 プロパティpathに画像のファイルパスを渡すと画像を表示できます。いずれもCanvasクラスに画像を表示しています。

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS