ソフト開発

ソフト開発のトピックス-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クラスなどは、表示する文字列などから最小サイズ、推奨サイズおよび最大サイズが自動的に設定されます。もちろん、再設定することも可能です。

  • このエントリーをはてなブックマークに追加
  • Evernoteでクリップする
  • 印刷する

今週のトピックス-PR-

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

nikkeibpITpro

▲ ページトップ

CIO Computerworld
ITpro EXPO 2014

Twitterもチェック

執筆者一覧

イベントINFO -PR-

最新号

注目の書籍

好評発売中!

HTML5アプリ開発の入門書

HTML5でWebアプリを作 るために必要な知識を 網羅的に紹介。スマホ アプリ開発も詳しく解説!