ソフト開発のトピックス-PR-

JavaFX 2で始めるGUI開発 第7回 レイアウト その1

2013/02/04
櫻庭 祐一=横河電機 (筆者執筆記事一覧

 先月はGUIには直接関連のないプロパティとバインドについて紹介しました。今月から、再びGUI関連の話題に戻ります。

 今までコントロールなどを使用してGUIを構成するサンプルをいろいろと作成してきました。しかし、サンプルに含まれるにも関わらず、説明を省いてきた部分があります。それがコンテナとレイアウトです。

 コンテナは複数のノードを貼るためのノードです。一方、コンテナに貼るノードの配置をおこなうのがレイアウトになります。

 Swingではコンテナの機能とレイアウトの機能は分割されており、それぞれjava.awt.Containerクラス、java.awt.LayoutManagerインタフェースで表します。これに対し、JavaFXではコンテナにレイアウト機能が含まれています。

 そこで、今月と来月で、コンテナとレイアウトについてご紹介します。

 今月使用するサンプルは以下のリンクからダウンロードできます。

サンプルのプロジェクト (こちらからダウンロードできます)

ノードのサイズ

 レイアウトの機能を紹介する前に、レイアウトには必須の情報であるノードのサイズについて説明することにしましょう。とはいうものの、ノードのサイズを直接指定することはできません。サイズを決めるのはレイアウト機能だからです。

 ノードでできることはレイアウト機能に対して、サイズを決めるための情報を与えることだけです。

 ノードで指定できるサイズを決めるための情報には次の3種類があります。

  • 最小サイズ minWidth、minHeight
  • 推奨サイズ prefWidth、prefHeight
  • 最大サイズ maxWidth、maxHeight

 レイアウトの種類によっては推奨サイズをそのまま使用するものもありますし、使用しないこともあります。また、推奨サイズを使用していたとしても、ステージのリサイズに伴って推奨サイズから外れてしまうこともあります。

 ただし、ほとんどのレイアウトで最小サイズと最大サイズは守られます。つまり、リサイズして縮小した場合でも最小サイズより小さくなることはありません。同様に、拡大しても最大サイズより大きくなることはありません。

 ところが、NodeクラスはprefWidthやpreHeightなどのプロパティを定義していません。とはいうもののコントロールやコンテナはすべてprefWidthやprefHeightなどのプロパティが使用可能です。幅と高さをまとめて設定するsetPrefSize/setMinSize/setMaxSizeメソッドも定義されています。

 また、ButtonクラスやLabelクラスなどは、表示する文字列などから最小サイズ、推奨サイズおよび最大サイズが自動的に設定されます。もちろん、再設定することも可能です。

注目のIT企業が集結する一大イベント「ITpro EXPO 2015」は9/30~10/2に開催! 入場料3000円が無料になる事前登録を受付中! セミナー登録も開始しました。ぜひご来場ください。

今週のトピックス-PR-

この記事に対するfacebookコメント

※Facebookのコメント機能は、Facebookのソーシャルプラグイン機能を用いて実現しています。本機能、およびコメントの内容について、ITproは一切の責任を負い ません(ITproからのコメントを除く)。また、コメントを非表示にしたり、機能を停止することがあります。

▲ ページトップ

日経コンピュータ Digital

イベントINFO -PR-

最新号

注目の書籍

好評発売中!

日経ソフトウエアプログラミングの入門書大全

プログラミングを「知る」から「楽しむ」まで、すべてが学べる決定版!9/15まで早割実施