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
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();
}
}
A vertical box container arranges the components top-to-bottom aligned in their preferred sizes.
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);
}
}
BoxLayout puts components into a row or into a column
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);
}
}
BoxLayout: set a rigid area among our components.
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);
}
}
Glue spreads the components as far apart as possible.
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);
}
}
Laying Out Components in a Row or Column
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);
}
}
Separating Components in a Row or Column
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);
}
}
Strut spreads the components apart by a fixed distance
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);
}
}