Labelの作成
では作成したソースコードをチェックしてみましょう。startupメソッドから見ていきます。画面に表示されているウインドウとテキストの表示を用意しています。
GUIで利用される部品類は、Pivotのコンポーネント/コンテナ・クラスとして用意されています。ここでは、ウインドウのコンテナ「Window」と、テキストを表示するラベルのコンポーネント「Label」を利用しています。これらはAWTなどではなく、org.apache.pivot.wtkパッケージに独自のクラスとして用意されています。
まずはLabelからです。Labelは、AWTのLabelと同様、テキストを表示するためのものです。最初にnewでインスタンスを作成します。
Label label = new Label();
続いて、作成したインスタンスのメソッドを呼び出し、コンポーネントに必要な設定を行っていきます。コンポーネントの表示は、それぞれのクラスにプロパティとして用意されており、アクセサ・メソッドを呼び出して設定を行います。まず表示するテキストを「setText」メソッドで設定します。
label.setText("Hello Pivot!");
これは説明の必要がないでしょう。問題はその後に行っている「表示スタイルの設定」です。Labelなどのコンポーネントの表示スタイルは、「StyleDictionary」というクラスのインスタンスとして管理されています。これは「getStyle」というメソッドで取得することができます。コンポーネントの表示スタイルを設定するには、まずこのメソッドでコンポーネントに設定されているStyleDictionaryインスタンスを取得し、そこに「put」メソッドを使って必要な値を追加していきます。
StyleDictionary style = label.getStyles(); style.put("font", new Font("Arial", Font.BOLD, 24)); style.put("color", Color.RED); style.put("horizontalAlignment", HorizontalAlignment.CENTER); style.put("verticalAlignment", VerticalAlignment.CENTER);
ここでは、"font","color","horizontalAlignment","verticalAlignment"といった設定を追加しています。color/fontは、AWTに用意されているColor/Fontクラスのインスタンスをそのまま利用することができます。horizontalAlignment/verticalAlignmentは縦横の位置揃えを設定するものですが、それぞれHorizontalAlignment/VerticalAlignmentクラスに用意されているクラスフィールドを使って指定をします。ここではいずれもCENTERを指定し、中央揃えで表示するように設定しています。
Windowの作成
続いてウインドウとなるWindowインスタンスを作成します。これもLabelと同様、newでインスタンスを作成後、メソッドを呼び出してプロパティを設定していきます。
window = new Window(); window.setContent(label); window.setTitle("Hello Pivot!"); window.setMaximized(true); window.setSize(320, 200);
ここでは、4つのメソッドを呼び出しています。「setContent」は、Windowsに表示するコンテンツを設定するもので、先ほどのLabelインスタンスを引数に設定しています。Windowは、その中に表示するコンポーネント/コンテナをsetContentで設定します。ここでは単純にLabelを設定していますが、複雑なレイアウトであれば、複数のコンポーネントを追加するコンテナを用意して設定します。
「setTitle」はウインドウのタイトルを設定するものです。「setMaximized」は、コンテナ(Window)のサイズに合わせてコンテンツを最大化するもので、trueにしておくとウインドウの大きさに合わせてLabelが大きさを調整されます。「setSize」はウインドウの横幅・縦幅を設定するものです。
ウインドウの設定が終わったら、最後に「open」メソッドを呼び出し、ウインドウを開きます。
window.open(display);
openは引数にウインドウの親コンテナを指定します。AWT/Swingなどでも、ダイアログを表示するとき、そのウインドウのオーナーとなるコンテナを指定しますが、それと同様に考えればよいでしょう。ここでは、startupメソッドの引数として渡される「display」を指定しています。これは「Display」クラスのインスタンスで、アプリケーションのウインドウなどが表示されるルートとなるコンテナです。画面に表示するウインドウは、このDisplayをオーナーとしてopenするのです。