The Java Program: TextForm.java
1 // TextForm.java
2
3 import javax.swing.JPanel;
4 import javax.swing.JLabel;
5 import javax.swing.JFrame;
6 import javax.swing.JButton;
7 import javax.swing.JTextField;
8
9 import java.awt.Insets;
10 import java.awt.GridBagConstraints;
11 import java.awt.GridBagLayout;
12 import java.awt.BorderLayout;
13 import java.awt.Container;
14
15 import java.awt.event.*;
16
17 public class TextForm extends JPanel {
18
19 private final JTextField[] tf;
20
21 // Create a form with the given labels, tooltips, and sizes
22 public TextForm (String[] labels, String[] tips, int[] widths) {
23 tf = new JTextField[labels.length];
24
25 setLayout (new GridBagLayout());
26 final GridBagConstraints gbc = new GridBagConstraints();
27 gbc.anchor = GridBagConstraints.WEST;
28 gbc.insets = new Insets (3,3,3,3);
29
30 // Add labels and fields as specified
31 for (int i=0; i<labels.length; i++) {
32 final JLabel l = new JLabel (labels[i]);
33
34 // Create an accessibility-friendly field
35 tf[i] = new JTextField (widths[i]);
36 tf[i].setToolTipText (tips[i]); // sets accessible desc too!
37 l.setLabelFor (tf[i]); // sets accessibleName for tf[i]!
38
39 // lay out label & field
40 gbc.gridy = i;
41 gbc.gridx = 0;
42 add(l, gbc);
43 gbc.gridx = 1;
44 add(tf[i], gbc);
45 }
46 }
47
48 // Get the contents of one of the TFs.
49 public String getEnteredText(int index) {
50 return tf[index].getText();
51 }
52
53 // A simple example program
54 public static void main(String[] args) {
55 final String[] labels = { "First Name", "Middle Initial", "Last Name", "Age" };
56 final String[] descs = { "First Name","Middle Initial", "Last Name", "Age" };
57
58 final int[] widths = { 15, 1, 15, 3 };
59
60 final TextForm form = new TextForm(labels, descs, widths);
61
62 // A button that dumps the field contents
63 final JButton dump = new JButton("Dump");
64 class DumpListener implements ActionListener {
65 public void actionPerformed(ActionEvent ev) {
66 System.out.println(form.getEnteredText(0));
67 System.out.println(form.getEnteredText(1));
68 System.out.println(form.getEnteredText(2));
69 System.out.println(form.getEnteredText(3));
70 }
71 }
72 dump.addActionListener (new DumpListener());
73
74 final JFrame f = new JFrame("Text Form");
75 frame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE); // Requires Java 1.3
76 final Container c = f.getContentPane();
77 c.setLayout (new BorderLayout());
78 c.add(form, BorderLayout.CENTER);
79 c.add(dump, BorderLayout.SOUTH);
80 f.pack();
81 f.setVisible(true);
82 }
83 }