1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 package org.jdesktop.swingx;
22
23 import java.awt.Component;
24 import java.awt.Container;
25 import java.awt.Dimension;
26 import java.awt.Insets;
27 import java.awt.LayoutManager;
28
29
30
31
32
33
34 public class VerticalLayout implements LayoutManager {
35
36 private int gap = 0;
37
38 public VerticalLayout() { }
39
40 public VerticalLayout(int gap) {
41 this.gap = gap;
42 }
43
44 public int getGap() {
45 return gap;
46 }
47
48 public void setGap(int gap) {
49 this.gap = gap;
50 }
51
52 public void addLayoutComponent(String name, Component c) { }
53
54 public void layoutContainer(Container parent) {
55 Insets insets = parent.getInsets();
56 Dimension size = parent.getSize();
57 int width = size.width - insets.left - insets.right;
58 int height = insets.top;
59
60 for (int i = 0, c = parent.getComponentCount(); i < c; i++) {
61 Component m = parent.getComponent(i);
62 if (m.isVisible()) {
63 m.setBounds(insets.left, height, width, m.getPreferredSize().height);
64 height += m.getSize().height + gap;
65 }
66 }
67 }
68
69 public Dimension minimumLayoutSize(Container parent) {
70 return preferredLayoutSize(parent);
71 }
72
73 public Dimension preferredLayoutSize(Container parent) {
74 Insets insets = parent.getInsets();
75 Dimension pref = new Dimension(0, 0);
76
77 for (int i = 0, c = parent.getComponentCount(); i < c; i++) {
78 Component m = parent.getComponent(i);
79 if (m.isVisible()) {
80 Dimension componentPreferredSize =
81 parent.getComponent(i).getPreferredSize();
82 pref.height += componentPreferredSize.height + gap;
83 pref.width = Math.max(pref.width, componentPreferredSize.width);
84 }
85 }
86
87 pref.width += insets.left + insets.right;
88 pref.height += insets.top + insets.bottom;
89
90 return pref;
91 }
92
93 public void removeLayoutComponent(Component c) { }
94
95 }