2012年9月7日金曜日
go-uiでの画面レイアウト
こんにちは。scarvizです。
今回はgo-uiでの画面レイアウトについて色々試してみたので紹介します。
「(GOPATH)/src/github.com/visualfc/go-ui/examples」のサンプルとか、
「(GOPATH)/src/github.com/visualfc/go-ui/ui」のソースコードを参考にしました。
■今回作ったもの
画像を読み込んで表示するアプリを作ってみました。
ソースコードは下記に置いています。
https://bitbucket.org/scarviz/src/src/4a33b433a435/Go/20120907
いっぱいコメントつけているので、参考になれば幸いです。
もしかすると、次回以降に説明するかもしれないです。
1.まずは、初期画面は以下です。
テキストボックスと、ボタンを横並びに配置しています。
テキストボックスに画像のパス(フルパス)を入れて、「画像表示」ボタンを押下すると、次のようになります。
テキストボックスと、ボタンの下にGopherの画像が表示されていますね。
■レイアウトの説明
1.どうやって配置しているかというと、まず初期画面では、縦レイアウトの「VBoxLayout」をメインにして、その中に横レイアウトの「HBoxLayout」を配置しました。
そして、「HBoxLayout」の中にテキストボックスと、ボタンを配置すれば、横に並ぶ形になります。
以下のような感じです。
2.画像パスを入力してボタンを押下すると、縦レイアウトの「VBoxLauout」の中に画像を配置するようにしました。
なので、「HBoxLayout」と画像が縦に並ぶ形になります。
以下のような感じです。
3.こんな感じで組み合わせていくことで、自在に配置することが出来るんですね。
レイアウトの種類はたぶん下の5つになると思います。
他にもあったよ!っていう方は教えてください!
VBoxLayout : 縦レイアウト
HBoxLayout : 横レイアウト
StackedLayout : 縦横最大表示
BoxLayout : VBoxLayoutとHBoxLayoutのベース
baseLayout : レイアウトのベース
上の3つがレイアウトとして使って、下の2つはベースなので、go-uiのソースでこれらが出てきたら、設定したりして使える関数なんだなと推測できます。
4.今回作成したアプリのソースコードから、レイアウトの書き方を一部抜粋してみました。
レイアウトはmain_ui関数の中で扱っています。
// ウィジェット(C#とかでいうフォーム)定義
w := ui.NewWidget()
// ウィジェットのレイアウト定義
// 縦レイアウト
vbox := ui.NewVBoxLayout()
// 横レイアウト
hbox := ui.NewHBoxLayout()
// ボタン定義
btn := ui.NewButton()
// 横レイアウトにボタンを加える
hbox.AddWidget(btn)
// 縦レイアウトに横レイアウトを設定する
vbox.AddLayout(hbox)
// 縦レイアウトをウィジェットに設定する
w.SetLayout(vbox)
ボタンとか、テキストボックスはAddWidget関数でレイアウトに設定して、レイアウトにレイアウトを入れ込むときは、AddLayout関数を使います。
そして、ウィジェットにレイアウトを設定するのは、SetLayout関数を使います。
配置場所はAddしていった順に、縦レイアウトなら上から下へ、横レイアウトなら左から右に配置されていきます。
細かい設定が分かんないところもあるんですが、とりあえずはレイアウトが出来たら、その中にボタンなどを入れていくだけなので、
それっぽいアプリが簡単に作れますね!
examplesにあるサンプルを見てみると、色んなコントロールを配置していたりします。
レイアウトを組み合わせて、それらのコントロールを配置していけば良さそうですね。
ちなみに、uiにあるuiobjs.goから各レイアウトとコントロールが確認できます。Eclipseのアウトラインを使えば楽に見れますよ。
※アウトラインは「ウィンドウ」→「ビューの表示」→「アウトライン」で表示されます。
Go言語の基本的な話とか、go-uiの説明とかすっ飛ばしていますが、何となく触れて動くのを体験するのも楽しいと思うので、ぜひ色々レイアウトを組み合わせてみてください!
登録:
コメントの投稿 (Atom)
0 件のコメント:
コメントを投稿