未分類

jRubyとSwingでWindowsのGUIアプリをつくる~Hello World

投稿日:

SwingはJavaのGUIツールキット。

JavaのGUIツールキットには簡素なSWTとかAWTとか、最新のJavaFX2.0とかあるけど、SwingはSWTやAWTより比較的リッチなインターフェイスでJavaFX2.0より情報が割りと豊富にある

Javaなので、基本的にはWIndowsでもMacでもLinuxでも実行可能で環境に応じたリッチなコンポーネントが提供されるらしい

環境

Windows7にcygwinとjrubyをインストールする

Swingについては主にここの情報を参考にした

Swingを使ってみよう

JFrameを使ってみる

フレームの作成と表示

適当なところにmain.rbファイルをつくって

深く考えずにcygwinから実行してみる

左上に最小のフレームができたはず

2013-03-25_00h51_59

閉じるボタンで終了するようにしてみる

アプリケーション終了をクローズ処理として設定

このままだと閉じるボタンでウインドウは消えるけど、ターミナルではアプリを実行したままでctrl+Cを押して終了するしかない

こんな感じで1行くわえれば閉じるボタンでアプリも終了する

jRubyでJavaのライブラリをRubyっぽく使う

jRubyにはJavaのライブラリもRubyっぽく使う機能がついている

リンク先のサンプルと比較するとわかるのだけれど

はこういう風にも書ける

また、

はこんな感じで

 

タイトルやサイズ・位置を指定してみる

フレームのサイズと表示位置

まずタイトルやサイズを指定するのはこう

setSizeをRubyぽくするのがわからなかった

2013-03-25_01h07_58

位置指定

位置指定はsetSizeのかわりにsetBoundsをつかう

これは(100,100)の座標に(300, 300)のフレームをセット

 画面の真ん中に表示するにはこう

フレームをWindows中央に表示

 

クラス化

JFrameクラスを継承したクラスを定義する

クラス化のポイントは superself が必要なこと

もともとJFrameのコンストラクタはタイトルをStringで引数にできる

 

コンポーネントの追加

フレームに含まれるペインとコンポーネントの追加

フレームはペインと呼ばれるレイヤー構造をもっていて、ここにラベル、ボタン、テキストフィールドなどのコンポーネント(部品)を加えていく

paneは次のように取得してaddメソッドで追加できる

配置条件を表現するオブジェクトは次のようにBorderLayoutをつかう

BorderLayoutの種類はつぎのとおり

こんな風に省略したときはCENTERを意味する

実はgetContentPaneは省略していきなりaddメソッドを使えたりする

まとめると

 

2013-03-25_01h56_21

add(button, BorderLayout::NORTH) ならばこう

2013-03-25_01h58_27

イベントを設定する

イベントモデル

ボタンをクリックしたらなにか処理するようにするにはボタンにアクションイベントを設定すればよい

ボタンを押したらダイアログボックスに”Hello World”と表示させる

全部まとめるとこんな感じ

2013-03-25_02h10_21

 

Swing コードをデバッグし、テストする

-未分類
-

執筆者:

関連記事

no image

1分でわかるvimperator【ニコニコ動画】

yousayさんに癒される~fortune

環境 ubuntu server 12.04 ruby 1.9.3p194 fortune | cowsayというネタソフトで牛のAAに占いを喋らせるというコマンド …

no image

Google ドライブのプレゼンテーション埋込みを試す

ログインしなくてもKeyノートも見られるし、ダウンロード・印刷も可能 このあたりをもう少し細かく設定できたらな

jRubyでexeファイル作成~rawr

環境確認 最新のjdkをインストールしてJAVA_HOMEを指定した

目次1 gem rawrをインストール2 プロジェクトディレクト …

JavaでExcelにHello World〜Apache POI

環境 Mac OSX Lion java version “1.6.0_33” Java(TM) SE Runtime Environment (build 1.6.0_33- …