C:\proj\zoneLayout\examples\com\atticlabs\zonelayout\swing\examples\FormLayoutComparison.java

1    package com.atticlabs.zonelayout.swing.examples;
2    
3    import com.jgoodies.forms.layout.FormLayout;
4    import com.jgoodies.forms.layout.CellConstraints;
5    import com.jgoodies.forms.builder.PanelBuilder;
6    import com.jgoodies.forms.factories.ButtonBarFactory;
7    
8    import javax.swing.JPanel;
9    import javax.swing.JFrame;
10   import javax.swing.SwingUtilities;
11   import javax.swing.JTextField;
12   import javax.swing.JComboBox;
13   import javax.swing.BorderFactory;
14   import javax.swing.JButton;
15   import javax.swing.JList;
16   import java.awt.BorderLayout;
17   
18   public class FormLayoutComparison {
19       public static final Object[] values = new Object[] {
20               "Item 1", "Item 2", "Item 3", "Item 4", "Item 5"
21       } ;
22   
23       public JPanel buildPanel() {
24           FormLayout layout = new FormLayout(
25                   "d:g",
26                   "d, 3dlu, f:d:g, 3dlu, d"
27   
28           );
29   
30           FormLayout nameLayout = new FormLayout(
31                   "r:d, 3dlu, d:g, 7dlu, r:d, 3dlu, d:g",
32                   "d, 3dlu, d, 3dlu, d"
33   
34           );
35   
36           FormLayout emailLayout = new FormLayout(
37                   "r:d, 3dlu, d:g, 3dlu, d",
38                   "d, 3dlu, d, 3dlu, d, 3dlu, d, f:d:g"
39   
40           );
41   
42           PanelBuilder builder = new PanelBuilder(nameLayout);
43           CellConstraints cc = new CellConstraints();
44           builder.addLabel("First Name:", cc.xy(1, 1));
45           builder.add(new JTextField(15), cc.xy(3, 1));
46           builder.addLabel("Last Name:", cc.xy(5, 1));
47           builder.add(new JTextField(15), cc.xy(7, 1));
48           builder.addLabel("Title:", cc.xy(1, 3));
49           builder.add(new JTextField(15), cc.xy(3, 3));
50           builder.addLabel("Nickname:", cc.xy(5, 3));
51           builder.add(new JTextField(15), cc.xy(7, 3));
52           builder.addLabel("Display Format:", cc.xy(1, 5));
53           builder.add(new JComboBox(values), cc.xyw(3, 5, 5));
54           JPanel namePanel = builder.getPanel();
55           namePanel.setBorder(BorderFactory.createCompoundBorder(
56                   BorderFactory.createTitledBorder("Name"),
57                   BorderFactory.createEmptyBorder(5, 5, 5, 5)));
58   
59           builder = new PanelBuilder(emailLayout);
60           cc = new CellConstraints();
61           builder.addLabel("Email Address:", cc.xy(1, 1));
62           builder.add(new JTextField(15), cc.xy(3, 1));
63           builder.add(new JButton("Add"), cc.xy(5, 1));
64   
65           builder.add(new JList(values), cc.xywh(1, 3, 3, 6));
66   
67           builder.add(new JButton("Edit"), cc.xy(5, 3));
68           builder.add(new JButton("Remove"), cc.xy(5, 5));
69           builder.add(new JButton("Advanced"), cc.xy(5, 7));
70   
71           JPanel emailPanel = builder.getPanel();
72           emailPanel.setBorder(BorderFactory.createCompoundBorder(
73                   BorderFactory.createTitledBorder("E-mail"),
74                   BorderFactory.createEmptyBorder(5, 5, 5, 5)));
75   
76           builder = new PanelBuilder(layout);
77           builder.add(namePanel, cc.xy(1, 1));
78           builder.add(emailPanel, cc.xy(1, 3));
79           builder.add(ButtonBarFactory.buildOKCancelBar(
80                   new JButton("OK"), new JButton("Cancel")),
81                   cc.xywh(1, 5, 1, 1, "right, bottom"));
82           JPanel p = builder.getPanel();
83           p.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
84   
85           return p;
86       }
87   
88       public static void main(String[] args) {
89           final JFrame frame = new JFrame("FormLayout");
90   
91           frame.getContentPane().add(
92                   new FormLayoutComparison().buildPanel(), BorderLayout.CENTER);
93   
94           frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
95   
96           SwingUtilities.invokeLater(new Runnable() {
97               public void run() {
98                   frame.pack();
99                   frame.setVisible(true); 
100              }
101          });
102      }
103  }
104