Layout manager
From Wikipedia, the free encyclopedia
Layout managers are software components used in widget toolkits which have the ability to lay out widgets by their relative positions without using distance units. It is often more natural to define component layouts in this manner than to define their position in pixels or common distance units, so a number of popular widget toolkits include this ability by default. Widget toolkits that provide this function can generally be classified into two groups:
[edit] Examples
[edit] XUL
In XUL, one can use elements like the vbox container to stack components on top of each other.
<?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="Yes"/> <button id="no" label="No"/> <button id="maybe" label="Maybe"/> </vbox> </window>
This piece of code shows 3 buttons stacked on top of each other in a vertical box:
[edit] XAML
The DockPanel container lays out children components according to their Dock properties.
<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>
This code shows 4 text blocks on top of each other.
[edit] Java Swing
The FlowLayout layout manager arranges components in a directional flow, much like lines of text in a paragraph. It arranges components horizontally until no more components fit on the same line, then it places them on another line.
import javax.swing.JFrame; import javax.swing.JButton; import java.awt.FlowLayout; import java.awt.Container; public class LayoutExample extends JFrame { public LayoutExample() { this.setTitle("FlowLayoutDemo"); // get the top-level container in the Frame (= Window) Container contentPane = this.getContentPane(); // set the layout of this container contentPane.setLayout(new FlowLayout()); // add buttons in this container this.add((new JButton("Button 1"))); this.add((new JButton("Button 2"))); this.add((new JButton("Button 3"))); this.add((new JButton("Long-Named Button 4"))); this.add((new JButton("5"))); // exit the application when clicking on the right close-button this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); } public static void main(String[] args) { LayoutExample example = new LayoutExample(); example.setVisible(true); } }
This code shows 5 buttons alongside each other on the same line:



