ウインドウ上に、ボタンなどの部品を配置(レイアウト)してゆくにはレイアウトコマンドが必要です。
これまでは、 columnLayout によって縦 1 列に部品を並べていきました。
しかし、横に並べたり、もっと自由にレイアウトを行いたい場合には、
そのためのレイアウトコマンドを使用します。
レイアウトコマンドには、以下のような種類があります。
サンプルプログラムと図は Layoutの一覧 を参照してください。
いままでは columnLayout のような単純なレイアウトだけでしたが、
1 つのレイアウトだけではできないような、
複雑なレイアウトを実現するためにはどうしたら良いでしょうか。
実は、レイアウトは入れ子にすることができるので、
いくらでも複雑なレイアウトを作ることができます。
ただ入れ子にする場合には、あるレイアウトの範囲がどこまでなのかを決めなければなりません。
ウインドウ上の部品は、必ずある 1 つのレイアウトの範囲内にある必要があるからです。
そのために setParent ..; コマンドを使用して、
どこまでが特定のレイアウトの範囲なのかを決めてゆきます。
レイアウトによってボタンを縦・横に並べる GUI を作ってみましょう。
ここでは、ウインドウの部品を横に並べるために rowLayout を使用してみます。
なお、このスクリプトはレイアウトの練習なので、各ボタンを押しても何も実行しません。
window -title "レイアウト 1";
columnLayout;
button -label "A";
rowLayout -numberOfColumns 2 -columnWidth2 20 20;
button -label "B";
button -label "C";
setParent ..;
button -label "D";
rowLayout -numberOfColumns 3 -columnWidth3 20 20 20;
button -label "E";
button -label "F";
button -label "G";
setParent ..;
showWindow;
window -title "layout1";
columnLayout;
button -label "A";
rowLayout -numberOfColumns 2 -columnWidth2 20 20;
button -label "B";
button -label "C";
setParent ..;
button -label "D";
rowLayout -numberOfColumns 3 -columnWidth3 20 20 20;
button -label "E";
button -label "F";
button -label "G";
setParent ..;
showWindow;
上の setParent コマンドの説明で、
このコマンドはレイアウトの範囲を決めるために使うと説明してきましたが、
今までのウインドウを作成するスクリプトでは setParent コマンドは使っていませんでした。
実は、今までの各スクリプトの最初に実行されている columnLayout コマンドに対応する、
setParent コマンドは省略してあります。
省略しないとどうなるかは、以下のスクリプトを実行してみるとわかります。
window;
columnLayout;
setParent ..;
showWindow;
実行すると何もないウインドウが表示されます。
表示された後で、
button;
コマンドを実行してみてください。
するとウインドウにボタンが現れます。
同様に、部品を作るコマンド(スライダなど)を実行すると、
ウインドウに部品が追加されてゆくのがわかると思います。