Java/Swing JFC/BoxLayout
Содержание
- 1 Align your components in horizontal or vertical layout
- 2 A vertical box container arranges the components top-to-bottom aligned in their preferred sizes.
- 3 BoxLayout puts components into a row or into a column
- 4 BoxLayout: set a rigid area among our components.
- 5 Glue spreads the components as far apart as possible.
- 6 Laying Out Components in a Row or Column
- 7 Separating Components in a Row or Column
- 8 Strut spreads the components apart by a fixed distance
Align your components in horizontal or vertical layout
<source lang="java">
import java.awt.BorderLayout; import java.awt.Container; import java.awt.Dimension; import javax.swing.Box; import javax.swing.BoxLayout; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; public class Main extends JFrame {
public Main() { super("Demostrating BoxLayout"); final int SIZE = 3; Container c = getContentPane(); c.setLayout(new BorderLayout(30, 30)); Box boxes[] = new Box[4]; boxes[0] = Box.createHorizontalBox(); boxes[1] = Box.createVerticalBox(); boxes[2] = Box.createHorizontalBox(); boxes[3] = Box.createVerticalBox(); for (int i = 0; i < SIZE; i++) boxes[0].add(new JButton("boxes[0]: " + i)); for (int i = 0; i < SIZE; i++) { boxes[1].add(Box.createVerticalStrut(25)); boxes[1].add(new JButton("boxes[1]: " + i)); } for (int i = 0; i < SIZE; i++) { boxes[2].add(Box.createHorizontalGlue()); boxes[2].add(new JButton("boxes[2]: " + i)); } for (int i = 0; i < SIZE; i++) { boxes[3].add(Box.createRigidArea(new Dimension(12, 8))); boxes[3].add(new JButton("boxes[3]: " + i)); } JPanel panel = new JPanel(); panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS)); for (int i = 0; i < SIZE; i++) { panel.add(Box.createGlue()); panel.add(new JButton("panel: " + i)); } c.add(boxes[0], BorderLayout.NORTH); c.add(boxes[1], BorderLayout.EAST); c.add(boxes[2], BorderLayout.SOUTH); c.add(boxes[3], BorderLayout.WEST); c.add(panel, BorderLayout.CENTER); setSize(350, 300); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setVisible(true); } public static void main(String args[]) { Main app = new Main(); }
}
</source>
A vertical box container arranges the components top-to-bottom aligned in their preferred sizes.
<source lang="java">
import javax.swing.Box; import javax.swing.BoxLayout; import javax.swing.JButton; public class Main {
public static void main(String[] argv) throws Exception { JButton component1 = new JButton(); JButton component2 = new JButton(); // Create vertical box container Box box = new Box(BoxLayout.Y_AXIS); // create a vertical box container box = Box.createVerticalBox(); // Add components box.add(component1); box.add(component2); }
}
</source>
BoxLayout puts components into a row or into a column
<source lang="java">
import java.awt.Dimension; import javax.swing.Box; import javax.swing.BoxLayout; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; public class TwoButtons {
public static void main(String[] args) { JFrame f = new JFrame(); JPanel basic = new JPanel(); basic.setLayout(new BoxLayout(basic, BoxLayout.Y_AXIS)); f.add(basic); basic.add(Box.createVerticalGlue()); JPanel bottom = new JPanel(); bottom.setAlignmentX(1f); bottom.setLayout(new BoxLayout(bottom, BoxLayout.X_AXIS)); JButton ok = new JButton("OK"); JButton close = new JButton("Close"); bottom.add(ok); bottom.add(Box.createRigidArea(new Dimension(5, 0))); bottom.add(close); bottom.add(Box.createRigidArea(new Dimension(15, 0))); basic.add(bottom); basic.add(Box.createRigidArea(new Dimension(0, 15))); f.setSize(300, 250); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.setVisible(true); }
}
</source>
BoxLayout: set a rigid area among our components.
<source lang="java">
import java.awt.Dimension; import java.awt.Insets; import javax.swing.Box; import javax.swing.BoxLayout; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.border.EmptyBorder; public class RigidArea {
public static void main(String[] args) { JPanel panel = new JPanel(); panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS)); panel.setBorder(new EmptyBorder(new Insets(40, 60, 40, 60))); panel.add(new JButton("Button")); panel.add(Box.createRigidArea(new Dimension(0, 5))); panel.add(new JButton("Button")); panel.add(Box.createRigidArea(new Dimension(0, 5))); panel.add(new JButton("Button")); panel.add(Box.createRigidArea(new Dimension(0, 5))); panel.add(new JButton("Button")); JFrame f = new JFrame(); f.add(panel); f.pack(); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.setLocationRelativeTo(null); f.setVisible(true); }
}
</source>
Glue spreads the components as far apart as possible.
<source lang="java">
import javax.swing.Box; import javax.swing.BoxLayout; import javax.swing.JButton; public class Main {
public static void main(String[] argv) throws Exception { JButton component1 = new JButton(); JButton component2 = new JButton(); Box box = new Box(BoxLayout.X_AXIS); box.add(component1); box.add(Box.createGlue()); box.add(component2); }
}
</source>
Laying Out Components in a Row or Column
<source lang="java">
import javax.swing.Box; import javax.swing.BoxLayout; import javax.swing.JButton; public class Main {
public static void main(String[] argv) throws Exception { JButton component1 = new JButton(); JButton component2 = new JButton(); Box box = new Box(BoxLayout.X_AXIS); box = Box.createHorizontalBox(); // Add components box.add(component1); box.add(component2); }
}
</source>
Separating Components in a Row or Column
<source lang="java">
import javax.swing.Box; import javax.swing.BoxLayout; import javax.swing.JButton; public class Main {
public static void main(String[] argv) throws Exception { JButton component1 = new JButton(); JButton component2 = new JButton(); Box box = new Box(BoxLayout.X_AXIS); box.add(component1); box.add(Box.createGlue()); box.add(component2); }
}
</source>
Strut spreads the components apart by a fixed distance
<source lang="java">
import javax.swing.Box; import javax.swing.BoxLayout; import javax.swing.JButton; public class Main {
public static void main(String[] argv) throws Exception { JButton component1 = new JButton(); Box box = new Box(BoxLayout.X_AXIS); int width = 10; box.add(Box.createHorizontalStrut(width)); box.add(component1); }
}
</source>