|
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