レイアウトマネージャは、ウィジェットツールキットで使用されるソフトウェアコンポーネントであり、距離単位を使用せずに相対的な位置に基づいてグラフィカルコントロール要素を配置する機能を備えています。コンポーネントのレイアウトを定義する際には、ピクセルや一般的な距離単位で位置を定義するよりも、このように定義する方が自然な場合が多いため、多くの人気ウィジェットツールキットにはこの機能がデフォルトで含まれています。この機能を提供するウィジェットツールキットは、一般的に次の2つのグループに分類できます。
AndroidにはConstraintLayoutがあります。[ 1 ]
GTKにはBox [ 2 ]とGrid [ 3 ]クラスがあります。
XULでは、コンポーネントを積み重ねるためのコンテナであるvboxのように、 Wayback Machineに2012年2月24日にアーカイブされています。
<?xml version="1.0"?> <?xml-stylesheet href="chrome://global/skin/" type="text/css"?><window id= "vbox example" title= "Example" xmlns= "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" ><vbox> <button id= "yes" label= "はい" /> <button id= "no" label= "いいえ" /> <button id= "maybe" label= "たぶん" /> </vbox></window>このコードは、縦長のボックス内に3つのボタンが上下に積み重ねられている様子を示しています。
DockPanelコンテナは、子コンポーネントをそれぞれのDockプロパティに従って配置します。
<Page xmlns= "http://schemas.microsoft.com/winfx/2006/xaml/presentation" WindowTitle= "myDock Panel" > <DockPanel> <TextBlock DockPanel.Dock= "Top" > Top 1 </TextBlock> <TextBlock DockPanel.Dock= "Top" > Top 2 </TextBlock> <TextBlock DockPanel.Dock= "Top" > Top 3 </TextBlock> <TextBlock DockPanel.Dock= "Top" > Top 4 </TextBlock> </DockPanel> </Page>このコードは、4つのテキストブロックを上下に重ねて表示します。
レイアウトFlowLayoutマネージャは、段落内のテキスト行のように、コンポーネントを方向性のある流れで配置します。コンポーネントを水平方向に配置していき、同じ行に収まりきらなくなると、別の行に配置します。その他のレイアウトマネージャとしては、コンポーネントをグリッド状に配置するGridLayoutマネージャや、コンポーネントをフレームの南、北、西、東、中央の5つの部分に配置するBorderLayoutマネージャなどがあります。
import javax.swing.JFrame ; import javax.swing.JButton ; import java.awt.FlowLayout ; import java.awt.Container ;public class Example { private JFrame frame ;public Example ( ) { frame = new JFrame ( "FlowLayout Demo" ); frame.setDefaultCloseOperation ( JFrame.EXIT_ON_CLOSE ); frame.setLayout ( new FlowLayout ()); frame.add ( ( new JButton ( " Button 1" ) )); frame.add ( ( new JButton ( " Button 2" ))); frame.add ( ( new JButton ( " Button 3" ) )); frame.add ( ( new JButton ( " Long -Named Button 4" ) ) ); frame.add ( ( new JButton ( " 5" ))); frame.pack ( ) ; frame.setVisible ( true ) ; }public static void main ( String [] args ) { Example ex = new Example (); } }このコードは、5つのボタンを同じ行に並べて表示します。
