class FormLayout implements LayoutManager
1: import java.awt.*;
3: /**
4: A layout manager that lays out components along a central axis
5: */
6: class FormLayout implements LayoutManager
7: {
8: public Dimension preferredLayoutSize(Container parent)
9: {
10: Component[] components = parent.getComponents();
11: left = 0;
12: right = 0;
13: height = 0;
14: for (int i = 0; i < components.length; i += 2)
15: {
16: Component cleft = components[i];
17: Component cright = components[i + 1];
19: Dimension dleft = cleft.getPreferredSize();
20: Dimension dright = cright.getPreferredSize();
21: left = Math.max(left, dleft.width);
22: right = Math.max(right, dright.width);
23: height = height + Math.max(dleft.height,
24: dright.height);
25: }
26: return new Dimension(left + GAP + right, height);
27: }
28:
29: public Dimension minimumLayoutSize(Container parent)
30: {
31: return preferredLayoutSize(parent);
32: }
34: public void layoutContainer(Container parent)
35: {
36: preferredLayoutSize(parent); // sets left, right
38: Component[] components = parent.getComponents();
40: Insets insets = parent.getInsets();
41: int xcenter = insets.left + left;
42: int y = insets.top;
44: for (int i = 0; i < components.length; i += 2)
45: {
46: Component cleft = components[i];
47: Component cright = components[i + 1];
49: Dimension dleft = cleft.getPreferredSize();
50: Dimension dright = cright.getPreferredSize();
52: int height = Math.max(dleft.height,
53: dright.height);
55: cleft.setBounds(xcenter - dleft.width, y + (height -
56: dleft.height) / 2, dleft.width, dleft.height);
58: cright.setBounds(xcenter + GAP, y + (height
59: - dright.height) / 2, dright.width, dright.height);
60: y += height;
61: }
62: }
64: public void addLayoutComponent(String name,
65: Component comp)
66: {}
68: public void removeLayoutComponent(Component comp)
69: {}
71: private int left;
72: private int right;
73: private int height;
74: private static final int GAP = 6;
75: }